35 pts code:
#include<iostream>
using namespace std;
int n,m,startx,starty,lx,ly;
int a[20][20];
bool book[20][20],flag=0;
const int dx[4]={0,-1,0,1};
const int dy[4]={-1,0,1,0};
struct zb{
int X, Y;
}chrome[400+10];
void dfs(int x,int y,int step){
chrome[step].X=x;
chrome[step].Y=y;
if(x==lx && y==ly){flag=1;
for(int i=1;i<=step;i++){
printf("(%d,%d)",chrome[i].X,chrome[i].Y);
if(i!=step){
printf("->");
}
}puts("");
return;
}
for(int i=0;i<4;i++){
int tx=x+dx[i],ty=y+dy[i];
if(tx<1||tx>n||ty<1||ty>m){
continue;
}
if(!book[tx][ty]&&a[tx][ty]){
chrome[step+1].X=tx;
chrome[step+1].Y=ty;
book[tx][ty]=1;
dfs(tx,ty,step+1);
book[tx][ty]=0;
}
}
}
int main(){
//freopen("in.txt","r",stdin);
//0 freopen("out.txt","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}book[startx][starty]=1;
scanf("%d%d%d%d",&startx,&starty,&lx,&ly);
if(a[startx][starty]==0){
printf("-1");
return 0;
}
dfs(startx,starty,1);
if(flag==0){
puts("-1");return 0;
}
return 0;
}
样例过了,为什么只有35分?