Dãy số Motzkin bắt đầu bằng 1, 1, 4, 9, v.v., Chúng ta có thể lấy số hạng thứ n tổng quát với dãy số. Dãy số Motzkin như sau.
một 0 =1
một 1 =1
một 2 =4
một 3 =9
a n =((2 * n + 1) / n + 2) * M (n-1) + ((3 * n - 3) / n + 2) * M (n - 2)
Thuật toán
-
Khởi tạo số n.
-
Lặp lại cho đến n.
-
Cập nhật hai số trước
-
-
Trả lại số cuối cùng.
Ví dụ
Thực hiện
Sau đây là cách thực hiện thuật toán trên trong C ++
#include <bits/stdc++.h>
using namespace std;
int getNthTerm(int n) {
if(n == 0 || n == 1) {
return 1;
}
int a = 1, b = 1;
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 << getNthTerm(n) << endl;
return 0;
} Đầu ra
Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.
21