35pts求助
  • 板块P1238 走迷宫
  • 楼主Demo_B11
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/28 13:18
  • 上次更新2023/11/2 11:05:51
查看原帖
35pts求助
1040770
Demo_B11楼主2023/10/28 13:18

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分?

2023/10/28 13:18
加载中...