Dãy Motzkin: M₀=1, M₁=1, M₂=4, M₃=9, M₄=21, M₅=51...
Công thức truy hồi:
Mₙ = ((2n+1)·Mₙ₋₁ + (3n-3)·Mₙ₋₂) / (n+2)
Triển khai C++
#include <bits/stdc++.h>
using namespace std;
int getMotzkin(int n) {
if (n == 0 || n == 1) return 1;
int a = 1, b = 1; // M0, M1
for (int i = 2; i <= n; i++) {
int c = ((2*i + 1) * b + (3*i - 3) * a) / (i + 2);
a = b;
b = c;
}
return b;
}
int main() {
int n = 5;
cout << getMotzkin(n) << endl; // 21
return 0;
}
Kết quả
21
Ứng dụng: Số Motzkin đếm số đường đi Motzkin, cách chia đa giác, v.v.