Rumah > Artikel > pembangunan bahagian belakang > 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.
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!