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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP