比赛 |
暑假培训B班二测 |
评测结果 |
AAAWAA |
题目名称 |
返回住所 |
最终得分 |
83 |
用户昵称 |
王者自由 |
运行时间 |
0.002 s |
代码语言 |
C++ |
内存使用 |
0.29 MiB |
提交时间 |
2012-07-22 11:36:53 |
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10;
int xy[4][2]={{0,1},{0,-1},{-1,0},{1,0}};
int r, c, s, k;
char G[N][N];
bool v[N][N];
void DFS(int x, int y, int d) {
if(x == r && y == c) {
if(d <= k) s++;
v[x][y] = 0;
} else for(int i=0; i<4; i++) {
int X = x+xy[i][0], Y = y+xy[i][1];
if(X < 1 || X > r || Y < 1 || Y > c) continue;
if(G[X][Y] == 'T' || v[X][Y]) continue;
v[X][Y] = 1;
DFS(X, Y, d+1);
v[X][Y] = 0;
}
}
int main() {
freopen("backbarn.in", "r", stdin);
freopen("backbarn.out", "w", stdout);
scanf("%d %d %d\n", &r, &c, &k);
for(int i=1; i<=r; i++)
scanf("%s\n", G[i]+1);
DFS(1, 1, 1);
printf("%d\n", s);
return 0;
}