社区讨论

5分求调

P1238走迷宫参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mhk7bxkt
此快照首次捕获于
2025/11/04 14:42
4 个月前
此快照最后确认于
2025/11/04 14:42
4 个月前
查看原帖
C
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+10;
int m,n,s[N][N],sx,sy,ex,ey,v[N][N]={};
struct jntm{
	int x,y;
};
vector<jntm> ans;
jntm p;
void print(){
	printf("(%d,%d)",sx,sy);
	for(int i=1;i<=ans.size();i++) printf("->(%d,%d)",ans[i].x,ans[i].y);
	printf("\n");
	while(!ans.size()) ans.pop_back();
}
void dfs(int x,int y){
	if(x==ex&&y==ey) print();
	if(x<1||y<1||x>m||y>n||!s[x][y]||v[x][y]) return;	p.x=x-1,p.y=y;
	ans.push_back(p);
	v[x][y]=1;
	dfs(x-1,y);
	ans.pop_back();
	v[x][y]=0;
	
	p.x=x,p.y=y+1;
	ans.push_back(p);
	v[x][y]=1;
	dfs(x,y+1);
	ans.pop_back();
	v[x][y]=0;
	
	p.x=x+1,p.y=y;
	ans.push_back(p);
	v[x][y]=1;
	dfs(x+1,y);
	ans.pop_back();
	v[x][y]=0;
	
	p.x=x,p.y=y-1;
	ans.push_back(p);
	v[x][y]=1;
	dfs(x,y-1);
	ans.pop_back();
	v[x][y]=0;
}
int main(){
	//freopen("zm.in","r",stdin);
	//freopen("zm.out","w",stdout);
	cin>>m>>n;
	for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>s[i][j];
	cin>>sx>>sy>>ex>>ey;
	if(s[sx][sy]==0||s[ex][ey]==0){
		cout<<-1;
		exit(0);
	}
	dfs(sx,sy);
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...