मान लीजिए कि हम गेस गेम खेल रहे हैं। इस खेल के गुण इस प्रकार हैं -
खिलाड़ी 1 1 से n तक की कोई संख्या चुनेगा। खिलाड़ी 2 को अनुमान लगाना है कि मैंने कौन सा नंबर चुना है। जब भी खिलाड़ी2 गलत अनुमान लगाता है, खिलाड़ी1 खिलाड़ी2 को बताएगा कि संख्या अधिक है या कम।
हम फ़ंक्शन अनुमान (संख्या) का उपयोग कर सकते हैं जो निम्नानुसार 3 संभावित परिणाम लौटाएगा -
-
-1 - प्लेयर1 की संख्या कम है
-
1 - प्लेयर1 की संख्या अधिक है
-
0 - संख्या का मिलान हुआ
इसलिए, यदि इनपुट n =10 जैसा है, तो चुनें =5, तो आउटपुट 5 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एल:=1,आर:=एन
-
जबकि l −=r, करें −
-
एम:=एल+(आर - एल)/2
-
यदि अनुमान (एम) 0 के समान है, तो -
-
वापसी मी
-
-
यदि अनुमान (एम) -1 के समान है, तो -
-
आर:=एम - 1
-
-
अन्यथा
-
एल:=एम + 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