比赛 暑假培训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;
}