提交时间:2022-05-28 10:19:09

运行 ID: 1001

#include<bits/stdc++.h> using namespace std; const int N = 205; char a[N][N]; struct zb{ int x, y, ckl; }; int m, n, ans = 1 << 30; int bj[N][N], xz[4] = {-1, 1, 0, 0}, yz[4] = {0, 0, -1, 1}; void dfs(int x, int y, int t, int res){ if(a[x][y] == '+'){ ans = min(ans, res); return ; } if(res > ans){ return ; } bj[x][y] = 1; for(int i = 0;i < 4;i ++){ int dx = x + xz[i], dy = y + yz[i]; if(dx >= 1 && dx <= n && dy >= 1 && dy <= m && !bj[dx][dy]){ if(a[dx][dy] == '#'){ if(!t) continue; dfs(dx, dy, t - 1, res + 1); } else{ dfs(dx, dy, t, res + 1); } } } bj[x][y] = 0; } int main(){ int t, cx, cy; cin >> n >> m >> t; for(int i = 1;i <= n;i ++){ for(int j = 1;j <= m;j ++){ cin >> a[i][j]; if(a[i][j] == '@'){ cx = i; cy = j; } } } dfs(cx, cy, t, 0); cout << ans; }