Computer >> Máy Tính >  >> Lập trình >> C ++

Đoán số cao hơn hoặc thấp hơn trong C ++


Giả sử chúng ta đang chơi Trò chơi Đoán. Các thuộc tính của trò chơi này như sau -

Người chơi 1 sẽ chọn một số từ 1 đến n. người chơi 2 phải đoán xem tôi đã chọn số nào. Mỗi khi người chơi 2 đoán sai, người chơi 1 sẽ cho người chơi 2 biết con số cao hơn hay thấp hơn.

Chúng ta có thể sử dụng hàm đoán (num) sẽ trả về 3 kết quả có thể có như sau -

  • -1 - Số của người chơi 1 thấp hơn

  • 1 - Số người chơi 1 cao hơn

  • 0 - Số được khớp

Vì vậy, nếu đầu vào là n =10, pick =5, thì đầu ra sẽ là 5.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • l:=1, r:=n

  • trong khi l - =r, do -

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

    • nếu đoán (m) giống 0, thì -

      • trả lại m

    • nếu đoán (m) giống -1, thì -

      • r:=m - 1

    • Nếu không

      • l:=m + 1

  • trả về 0

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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));
}

Đầu vào

5,10

Đầu ra

5