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

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

WBOY
WBOYke hadapan
2023-09-04 21:41:03854semak imbas

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;
}

Output

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

Minimum steps to reduce 21 to 1: 6

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam