#include <iostream>
using namespace std;
int solve(int **p,int n) {
int res = 0;
if (n == 0)
return 1;
else if (n % 2 != 0)
return 0;
else {
int i = n - 2;
res = 3 * solve(p, i);
i -= 2;
for (; i >= 0; i = i - 2) {
res += 2 * solve(p, i);
}
return res;
}
}
int main(){
int n;
cin >> n;
while (n != -1) {
int **p = new int*[5];
for (int i = 0; i<5; ++i)
p[i] = new int[n+2];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < n+2; j++)
p[i][j] = 1;
}
for (int i = 0; i < 5; i++) {
p[i][n+1] = 0;
p[i][0] = 0;
}
for (int j = 0; j < n + 2; j++) {
p[4][j] = 0;
p[0][j] = 0;
}
//解决
int num = solve(p,n);
cout << num << endl;
//解决完毕
for (int i = 0; i<3; ++i)
delete[] p[i];
delete[] p;
cin >> n;
}
return 0;
}
[Coursera]算法基础_Week3_递归_Q1
最新推荐文章于 2024-09-11 22:48:33 发布