rt,悬赏关注(可以互关最好),dalao们帮帮忙
我的代码:
#include<bits/stdc++.h>
using namespace std;
int n,s[15][15],a,b,c,d;
bool ans;
void dfs(int time,int stax,int stay)
{
if(time>10)return;
if(stax==c&&stay==d){
ans=true;
return;
}
if(s[stax+1][stay]==0&&time+1<=10){
dfs(time+1,stax+1,stay);
}
if(s[stax+1][stay]==1&&time+2<=10){
dfs(time+2,stax+1,stay);
}
if(s[stax-1][stay]==0&&time+1<=10){
dfs(time+1,stax-1,stay);
}
if(s[stax+1][stay]==1&&time+2<=10){
dfs(time+2,stax-1,stay);
}
if(s[stax][stay+1]==0&&time+1<=10){
dfs(time+1,stax,stay+1);
}
if(s[stax][stay+1]==1&&time+2<=10){
dfs(time+2,stax,stay+1);
}
if(s[stax][stay-1]==0&&time+1<=10){
dfs(time+1,stax,stay-1);
}
if(s[stax][stay-1]==1&&time+2<=10){
dfs(time+2,stax,stay-1);
}
}
int main()
{
ans=false;
cin>>n;
for(int i=0;i<=n+1;i++){
for(int j=0;j<=n+1;j++){
s[i][j]=999;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>s[i][j];
if(s[i][j]==3){
a=i;
b=j;
}
if(s[i][j]==2){
c=i;
d=j;
}
}
}
dfs(0,a,b);
if(ans)cout<<"YES";
else cout<<"gnlww";
return 0;
}