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

Tìm nghề nghiệp trong một gia đình đặc biệt trong C ++

Hãy xem xét có một gia đình bác sĩ và kỹ sư đặc biệt. Có một số quy tắc, những quy tắc này giống như bên dưới -

  • Mọi người đều có hai con
  • Con đầu lòng là kỹ sư, con thứ hai là bác sĩ
  • Con đầu lòng là bác sĩ, con thứ hai là kỹ sư
  • Tất cả các thế hệ bác sĩ và kỹ sư đều bắt đầu bằng kỹ sư

Vì vậy, nếu chúng ta muốn nhận được kết quả cho cấp độ 4 và vị trí 2, thì kết quả sẽ là Tiến sĩ

Ý tưởng là đơn giản. Nghề nghiệp của một người phụ thuộc vào hai điều sau đây.

  • Nghề nghiệp của cha mẹ.
  • Vị trí của nút:Khi vị trí của một nút là lẻ, thì nghiệp vụ của nó giống với cha của nó. nếu không thì nghề nghiệp khác với công việc gốc của nó.

Chúng tôi tìm nghề nghiệp của cha mẹ một cách đệ quy, sau đó sử dụng điểm 2 ở trên để tìm nghiệp vụ của nút hiện tại.

Ví dụ

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

Đầu ra

The profession is: Doctor