Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 더 높거나 낮은 숫자 추측


맞추기 게임을 한다고 가정해 보겠습니다. 이 게임의 속성은 다음과 같습니다 -

플레이어 1은 1에서 n까지의 숫자를 선택합니다. player2는 내가 선택한 번호를 추측해야 합니다. 플레이어 2가 잘못 추측할 때마다 플레이어 1은 플레이어 2에게 숫자가 더 높거나 낮은지 알려줍니다.

다음과 같이 3가지 가능한 결과를 반환하는 함수 추측(num)을 사용할 수 있습니다. -

  • -1 − Player1의 번호가 더 낮습니다.

  • 1 − Player1의 숫자가 더 높음

  • 0 - 숫자가 일치합니다.

따라서 입력이 n =10, 선택 =5와 같으면 출력은 5가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • l :=1,r :=n

  • l −=r인 동안 −

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

    • 추측(m)이 0과 같으면 -

      • 리턴 m

    • 추측(m)이 -1과 같으면 -

      • r :=m - 1

    • 그렇지 않으면

      • 내가 :=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