C++ 猜數字大小遊戲


假設我們正在玩猜數字遊戲。這個遊戲的規則如下:

玩家1會選擇一個1到n之間的數字。玩家2必須猜出我選擇的數字。每次玩家2猜錯,玩家1都會告訴玩家2數字是大了還是小了。

我們可以使用函式 guess(num),它將返回以下3個可能的結果:

  • -1 - 玩家1的數字較小

  • 1 - 玩家1的數字較大

  • 0 - 數字匹配

所以,如果輸入為 n = 10,pick = 5,則輸出為 5。

為了解決這個問題,我們將遵循以下步驟:

  • l := 1, r := n

  • 當 l <= r 時,執行:

    • m := l + (r - l) / 2

    • 如果 guess(m) 等於 0,則:

      • 返回 m

    • 如果 guess(m) 等於 -1,則:

      • r := m - 1

    • 否則

      • l := m + 1

  • 返回 0

示例

讓我們看下面的實現來更好地理解:

線上演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
private:
   int number;
   int guess(int num){
      if(number > num)
         return 1;
      if(number < num)
         return -1;
      return 0;
   }
public:
   Solution(int n){
      number = n;
   }
   int guessNumber(int n) {
      int l=1,r=n,m;
      while(l<=r){
         m=l+(r-l)/2;
         if(guess(m)==0)
            return m;
         if(guess(m)==-1)
            r=m-1;
         else
            l=m+1;
      }
      return 0;
   }
};
main(){
   Solution ob(5); //pick = 5
   cout << (ob.guessNumber(10));
}

輸入

5,10

輸出

5

更新於:2020年6月10日

485 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告