http://noi.openjudge.cn/ch0206/4982/
图的搜索类型。
#include <iostream>
#include <algorithm>
#include <string.h>
bool flag[30][50];
int dfs(int i, int j, int step) {
if (flag[i][j]) {
return 0;
}
if (step == 0) {
return 1;
}
flag[i][j] = 1;
int result = dfs(i , j+1, step - 1) +
dfs(i , j-1, step - 1) +
dfs(i + 1, j, step - 1);
flag[i][j] = 0; //一定要把flag清零,这样遍历下个点的时候仍然可以访问当前点
return result;
}
int main() {
int n;
scanf("%d", &n);
printf("%d",dfs(0, 25, n));
return 0;
}