Chengjintian @ 2023-04-09 22:22:00
我的原TLE代码:
#include <bits/stdc++.h>
using namespace std;
int n,m,temp,tx,ty;
int dx[12]={1,0,0,-1};
int dy[12]={0,1,-1,0};
bool ans;
char t[1145][1145];
bool used[114][114];
bool cheak(int x,int y){
if(x>n or x<1 or y>m or y<1)return true;
return false;
}
void mg(){
if (tx==n and ty==m){
ans=true;
return ;
}
if(cheak(tx,ty))return ;
for(int i=0;i<=3;i++){
tx+=dx[i];
ty+=dy[i];
if(!used[tx][ty] and t[tx][ty]=='.'){
used[tx][ty]=true;
mg();
used[tx][ty]=false;
}
tx-=dx[i];
ty-=dy[i];
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>t[i][j];
tx=1,ty=1;
mg();
if(ans)cout<<"Yes";
else cout<<"No";
return 0;
}
只要把回溯,也就是 “used[tx][ty]=false;”删了就A了
我也不到为什么
by Ruiqun2009 @ 2023-04-09 22:50:26
@yzyhxhd backtracing not needed.
by Chengjintian @ 2023-04-11 23:04:17
@Ruiqun2009
一只野生dalao!(喜
收下我的膝盖》》
by willix @ 2023-04-19 18:17:31
@yzyhxhd 因为回溯之后清空该访问点记录会导致一直卡在某一个点不停回溯、访问,然后就TLE了
by Chengjintian @ 2023-04-19 19:29:28
@willix
谢谢捏