CodeChef ISCC2017 AHHOUSE

来源:互联网 发布:备案未注册域名 编辑:程序博客网 时间:2024/05/24 03:49

题目链接


分析

直接DFS。

代码

#define maxn 12int n, m, a[maxn][maxn], b[maxn][maxn], ans, ansx, v[maxn][maxn];int dir[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};void dfs(int x, int y, int s, int t) {    if (x == n - 1 && y == m - 1) {        if (s < ans) {            ans = s;            ansx = t;        } else if (s == ans) {            ansx = min(ansx, t);        }    }    if (s > ans || s == ans && t >= ansx) {        return;    }    for (int i = 0; i < 4; i++) {        int ex = x + dir[i][0], ey = y + dir[i][1];        if (ex >= 0 && ex < n && ey >= 0 && ey < m && !v[ex][ey]) {            v[ex][ey] = 1;            dfs(ex, ey, s + a[ex][ey], t + b[ex][ey]);            v[ex][ey] = 0;        }    }}int main(){    int t;    scanf("%d", &t);    while (t--) {        scanf("%d%d", &n, &m);        for (int i = 0; i < n; i++) {            for (int j = 0; j < m; j++) {                scanf("%d", &a[i][j]);            }        }        for (int i = 0; i < n; i++) {            for (int j = 0; j < m; j++) {                scanf("%d", &b[i][j]);            }        }        ans = ansx = inf;        memset(v, 0, sizeof v);        v[0][0] = 1;        dfs(0, 0, a[0][0], b[0][0]);        printf("%d %d\n", ans, ansx);    }   }  
原创粉丝点击