मान लीजिए कि डॉक्टरों और इंजीनियरों का एक विशेष परिवार है। कुछ नियम हैं, ये नीचे की तरह हैं -
- सभी के दो बच्चे हैं
- इंजीनियर का पहला बच्चा इंजीनियर है, दूसरा बच्चा डॉक्टर है
- डॉक्टर की पहली संतान डॉक्टर होती है, दूसरी संतान इंजीनियर होती है
- डॉक्टरों और इंजीनियरों की सभी पीढ़ियां इंजीनियर से शुरू होती हैं
तो अगर हम लेवल 4 और पॉज़ 2 के लिए परिणाम प्राप्त करना चाहते हैं, तो परिणाम डॉक्टर होगा
विचार सरल है। एक व्यक्ति का पेशा निम्नलिखित दो पर निर्भर करता है।
- माता-पिता का पेशा।
- नोड की स्थिति:जब किसी नोड की स्थिति विषम होती है, तो उसका पेशा उसके माता-पिता के समान होता है। अन्यथा पेशा अपने माता-पिता से अलग है।
हम माता-पिता के पेशे को दोबारा ढूंढते हैं, फिर वर्तमान नोड के पेशे को खोजने के लिए उपरोक्त बिंदु 2 का उपयोग करें।
उदाहरण
#include<iostream>
using namespace std;
char getProfession(int level, int pos) {
if (level == 1)
return 'E';
if (getProfession(level-1, (pos+1)/2) == 'D')
return (pos%2)? 'D' : 'E';
return (pos%2)? 'E' : 'D';
}
int main(void) {
int level = 4, pos = 2;
cout << "The profession is: ";
if(getProfession(level, pos) == 'E'){
cout << "Engineer";
} else {
cout << "Doctor" ;
}
} आउटपुट
The profession is: Doctor