DFS

来源:互联网 发布:四大名助 综艺 知乎 编辑:程序博客网 时间:2024/05/29 04:23
#include<stdio.h>int n, m, p, q, min = 999999;int a[51][51], book[51][51];void dfs(int x, int y, int step){int next[4][2] = { { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 } };int tx, ty, k;if (tx == p&&ty == q){if (step < min){min = step;}return;}for (k = 0; k <= 3; k++){tx = x + next[k][0];ty = y + next[k][1];if (tx<1 || tx>n || ty<1 || ty>m){continue;}if (a[tx][ty] == 0 && book[tx][ty] == 0){book[tx][ty] = 1;dfs(tx, ty, step + 1);book[tx][ty] = 0;}}return;}int main(){int i, j, startx, starty;scanf("%d%d", &n, &m);for (i = 1; i <= n; i++){for (j = 1; j <= m; j++){scanf("%d", &a[i][j]);}}scanf("%d%d%d%d", &startx, &starty, &p, &q);book[startx][starty] = 1;dfs(startx, starty, 0);printf("%d\n", min);return 0;}


0 0
原创粉丝点击