給定一個整數作為輸入。目標是找到將輸入 Number 減少到 1 所需的最小步驟或運算元。可以執行的操作將是 -:
If Number是偶數,則將其除以 2。
如果 Number 是奇數,則將其遞增或遞減 1。
輸入− 數字=28
輸出− 將28 減少到1: 6 的最少步驟
解釋−
28 是偶數- 除以2 = 14
14 是偶數- 除以2 = 7
7 是奇數- 除以1 = 8
8 是偶數- 除以2 = 4
4 是偶數- 除以2 = 2
2是偶數- 除以2 = 1
輸入 − 數字=9
輸出 − 將9 減至1 的最少步驟: 4
解釋 -
9 是奇數- 減1 = 8
8 是偶數- 除以2 = 4
4 是偶數- 除以2 = 2
2 是偶數- 除以2 = 1
2 是偶數- 除以2 = 1 h2>
在此方法中,使用遞歸方法來檢查將Number 減少到1 所需的最少操作。如果它甚至只是簡單地除以 2,則遞歸檢查 Number 1 或 Number-1(以較小者為準)的最小方法.
將輸入的 Number 作為整數。
函數 minWays(int num) 將 num 作為輸入並傳回將 num 減少到 1 所需的最少運算元。
將變數 tmp1、tmp2 和 min 取為整數。
如果num%2==0則為偶數則設定num=num/2
如果num 為奇數,則設定tmp1= minWays(num-1) 和tmp2=minWays(num 1)。
設定 min 是 tmp1 的最小值和tmp2。
回傳1 min。
最後我們會得到想要的結果。
在main中列印結果。
#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#
以上是在C++中,透過執行給定的操作將一個數字減少到1的詳細內容。更多資訊請關注PHP中文網其他相關文章!