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.
Input− Nombor = 28
Output− Langkah minimum untuk mengurangkan 28 kepada 1: 6
nombor genap oleh 2 = 14
14 ialah nombor genap - bahagi dengan 2 = 77 ialah nombor ganjil - bahagi dengan 1 = 88 ialah nombor genap - bahagi dengan 2 = 44 ialah nombor genap - bahagi dengan 2 = 2 2 ialah nombor genap - bahagi dengan 2 = 1Input
− Nombor = 9Output
− Langkah-langkah minimum untuk mengurangkan 9 kepada 1: 4Pelan-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
#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; }
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!