मान लीजिए कि डॉक्टरों और इंजीनियरों का एक विशेष परिवार है। कुछ नियम हैं, ये नीचे की तरह हैं -
- सभी के दो बच्चे हैं
- इंजीनियर का पहला बच्चा इंजीनियर है, दूसरा बच्चा डॉक्टर है
- डॉक्टर की पहली संतान डॉक्टर होती है, दूसरी संतान इंजीनियर होती है
- डॉक्टरों और इंजीनियरों की सभी पीढ़ियां इंजीनियर से शुरू होती हैं
तो अगर हम लेवल 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