代码出错之后先是去看了题解,发现最热的题解跟我很相似,但题解貌似能过(仅是盲猜),我的就不行,检查了半天都没有查出个所以然。这道题样例没过,得了40分,求大佬们检查一下本萌新的代码。
#include<bits/stdc++.h>
using namespace std;
int maze[20][20],walk[1000][2],dx[4]={0,-1,0,1},dy[4]={-1,0,1,0},l,c,d,a,b,t,n,m;
void print()
{
int i;
t=1;
for(i=0;i<l;i++)
{
if(walk[i][0]!=walk[i-1][0]||walk[i][1]!=walk[i-1][1])
{
cout<<'('<<walk[i][0]<<','<<walk[i][1]<<')';
if(i!=l-1)cout<<"->";
}
}
cout<<endl;
}
void dfs(int x,int y)
{
int i;
if(x==c&&y==d)
{
walk[l][0]=x;
walk[l++][1]=y;
print();
return;
}
for(i=0;i<4;i++)
{
if(maze[x+dx[i]][y+dy[i]]==1)
{
walk[l][0]=x;
walk[l++][1]=y;
maze[x][y]=-1;
dfs(x+dx[i],y+dy[i]);
l--;
maze[x][y]=1;
}
}
}
int main()
{
int i,j;
cin>>n>>m;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>maze[i][j];
}
}
cin>>a>>b>>c>>d;
dfs(a,b);
if(!t)cout<<-1;
return 0;
}