Chào các bác, em đang có một bài tập đệ quy muốn tìm cách giải hay nhất:
Một bàn ăn có n người ngồi quanh, người ta dọn cho mỗi người một món ăn, thực đơn chỉ có 3 món A, B, và C. Hãy chỉ ra mọi cách dọn đồ ăn thỏa mãn điều kiện: không có 3 người nào liên tiếp có đồ ăn giống nhau.
Em có làm được một hàm như sau
void in_ra()
{
for (int i = 1; i <= n; i ++)
{
if ( a[i] == a[i+1])
{
if ( a[i] != a[i+2])
cout << a[i];
}
else cout << a[i];
}
x++;
cout<<endl;
}
void sinh(int n)
{
if (n == 0)
{
in_ra();
}
else {
a[n] = 0; sinh(n-1);
a[n] = 1; sinh(n-1);
a[n] = 2; sinh(n-1);
}
}
Kết quả có vẻ chưa chuẩn lắm, bác nào vào đóng góp ý tưởng cho em với