首页 文章资讯内容详情

在C ++中猜测数字更高或更低

2026-06-04 1 花语

假设我们正在玩猜猜游戏。该游戏的属性如下-

玩家1将选择一个从1到n的数字。player2必须猜测我选了哪个号码。每当玩家2猜错时,玩家1都会告诉玩家2这个数字是高还是低。

我们可以使用功能guess(num),它将返回3种可能的结果,如下所示:

-1−Player1的号码较小

1-Player1的号码更高

0-号码匹配

因此,如果输入为n=10,pick=5,则输出将为5。

为了解决这个问题,我们将遵循以下步骤-

l:=1,r:=n

当l-=r时,做-

l:=m+1

r:=m-1

返回m

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

如果guess(m)与0相同,则-

如果guess(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