首頁  >  文章  >  後端開發  >  在C++中,透過執行給定的操作將一個數字減少到1

在C++中,透過執行給定的操作將一個數字減少到1

WBOY
WBOY轉載
2023-09-04 21:41:03854瀏覽

在C++中,透過執行給定的操作將一個數字減少到1

給定一個整數作為輸入。目標是找到將輸入 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為0則回傳1。
  • 如果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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除