Rumah > pembangunan bahagian belakang > C++ > Dalam C++, kurangkan nombor kepada 1 dengan melakukan operasi yang diberikan

Dalam C++, kurangkan nombor kepada 1 dengan melakukan operasi yang diberikan

WBOY
Lepaskan: 2023-09-04 21:41:03
ke hadapan
866 orang telah melayarinya

Dalam C++, kurangkan nombor kepada 1 dengan melakukan operasi yang diberikan

Diberi integer sebagai input. Matlamatnya adalah untuk mencari bilangan minimum langkah atau operasi yang diperlukan untuk mengurangkan input Nombor kepada 1. Operasi yang boleh dilakukan ialah -:

  • Jika Nombor genap, maka bahagikannya dengan 2.

  • Jika Nombor ganjil, naikkan atau kurangkannya sebanyak 1.

Contoh

Input− Nombor = 28

Output− Langkah minimum untuk mengurangkan 28 kepada 1: 6

nombor genap oleh 2 = 14

14 ialah nombor genap - bahagi dengan 2 = 7

7 ialah nombor ganjil - bahagi dengan 1 = 8

8 ialah nombor genap - bahagi dengan 2 = 4

4 ialah nombor genap - bahagi dengan 2 = 2

2 ialah nombor genap - bahagi dengan 2 = 1

Input

− Nombor = 9

Output

− Langkah-langkah minimum untuk mengurangkan 9 kepada 1: 4

Pelan-pelan

1 = 8

8 genap - bahagi Ambil 2 = 4

4 ialah nombor genap - bahagi dengan 2 = 2

2 ialah nombor genap - bahagi dengan 2 = 1

Kaedah yang digunakan dalam atur cara berikut ialah seperti berikut

2 ialah nombor genap - bahagi dengan 2 = 1 h2> Dalam kaedah ini, kaedah rekursif digunakan untuk menyemak operasi minimum yang diperlukan untuk mengurangkan Nombor kepada 1. Cara minimum untuk menyemak secara rekursif untuk Nombor+1 atau Nombor-1 (yang mana lebih kecil) jika ia adalah pembahagian mudah dengan 2.

    Anggap Nombor input sebagai integer.
  • Fungsi minWays(int num) mengambil num sebagai input dan mengembalikan bilangan operasi minimum yang diperlukan untuk mengurangkan nombor kepada 1.
  • Ambil pembolehubah tmp1, tmp2 dan min sebagai integer.
  • Jika nombor ialah 0, kembalikan 1.
  • Jika num%2==0 ialah nombor genap, tetapkan num=num/2
  • Jika nombor ialah nombor ganjil, tetapkan tmp1=minWays(num-1) dan tmp2=minWays(num+1 ).
  • Tetapkan min sebagai nilai minimum tmp1 dan tmp2.
  • Kembali 1+min.
  • Akhirnya kita akan dapat hasil yang kita inginkan.
  • Cetak keputusan dalam utama.
  • Contoh
#include <iostream>
using namespace std;
int minWays(int num){
   int tmp1,tmp2,min;
   if (num == 1){
      return 0;
   }
   else if (num % 2 == 0){
      tmp1=minWays(num/2);
      return (1 + tmp1);
   }
   else{
      int tmp1=minWays(num - 1);
      int tmp2=minWays(num + 1);
      int min=tmp1<tmp2?tmp1:tmp2;
      return (1 + min);
   }
}
int main(){
   int Number = 21;
   cout <<"Minimum steps to reduce "<<Number<<" to 1: "<<minWays(Number);
   return 0;
}
Salin selepas log masuk

Output

Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut

Minimum steps to reduce 21 to 1: 6
Salin selepas log masuk

Atas ialah kandungan terperinci Dalam C++, kurangkan nombor kepada 1 dengan melakukan operasi yang diberikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan