问问题
  • 板块学术版
  • 楼主mztkn1133
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/21 09:40
  • 上次更新2024/8/21 11:52:49
查看原帖
问问题
1256413
mztkn1133楼主2024/8/21 09:40
#include <bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int n,m,ans=1000000;
char mp[N][N];
bool f[N][N],flag=0;
int dx[]={0,-1,1,0,0};
int dy[]={0,0,0,-1,1};
void dfs(int i,int j,int step) {
	if(mp[i][j]=='#') {
		flag=1;
		ans=min(step,ans);
		return;
	}
	for(int k=1;k<=4;k++) {
		int ni=i+dx[k];
		int nj=j+dy[k];
		if(ni<1||ni>n||nj<1||nj>m||mp[ni][nj]=='X'||f[ni][nj]) continue;
		f[ni][nj]=1;
		dfs(ni,nj,step+1);
		f[ni][nj]=0;
	}
}
int main() {
	cin >> n >> m;
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) {
			cin >> mp[i][j];
		}
	}
	f[1][1]=1;
	dfs(1,1,0);
	if(flag) cout << ans << endl;
	else cout << -1 << endl;
}

问这段代码为什么会TLE

题目

2024/8/21 09:40
加载中...