题目:P2802 回家
#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[10][10];
int color[10][10] = { 0 };
int xue = 6;
int path = 120;
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, -1, 0, 1};
void dfs(int i, int j, int xue, int step) {
if (xue <= 0) return;
if (step >= n * m) return;
if (step > path) return;
if (a[i][j] == 3) {
if (path > step) {
path = step;
}
return;
}
if (a[i][j] == 4) xue = 6;
for (int k = 0; k < 4; k ++) {
int tx = i + dx[k];
int ty = j + dy[k];
if (a[tx][ty] != 0) {
dfs(tx, ty, xue-1, step + 1);
}
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= m; j ++) {
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <=m ; j ++) {
if (a[i][j] == 2) {
dfs(i, j, 6, 0);
break;
}
}
}
if (path == 120) {
cout << "-1";
} else {
cout << path;
}
return 0;
}
各位大佬帮帮我吧...