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