Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find profession in a special family in C++
Consider there is a special family of doctors and engineers. There are some rules, these are like below −
- Everybody has two children
- First child of an engineer is an engineer, second child is doctor
- First child of a doctor is a doctor, second child is an engineer
- All generations of doctors and engineers starts with engineer
So if we want to get result for level 4 and pos 2, then result will be Doctor
The idea is simple. Profession of a person depends on following two.
- Profession of the parent.
- Position of node: When the position of a node is odd, then its profession is same as its parent. otherwise profession is different from its parent.
We recursively find the profession of parent, then use point 2 above to find the profession of current node.
Example
#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" ;
}
}
Output
The profession is: Doctor
Advertisements