专栏文章

C

个人记录参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@miqw9gw0
此快照首次捕获于
2025/12/04 11:46
3 个月前
此快照最后确认于
2025/12/04 11:46
3 个月前
查看原文
CPP
#include <bits/stdc++.h>
using namespace std;
int n,m,sx,sy,ex,ey,head,tail;
char a[1001][1001];
int q[1000001][4];
int d[]={0,0,1,0,-1,0};
void print(int k){
	if (q[k][3]!=0)
	print(q[k][3]);
	printf("(%d,%d)",q[k][1],q[k][2]);
	if (k!=tail)
	cout<<"->";
}
int main(){
	while (1){
		head=tail=1;
		cin>>n>>m;
		if (n==0&&m==0)
		break;
		bool f=1;
		memset(q,0,sizeof(q));
		for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
		cin>>a[i][j];
		cin>>sx>>sy>>ex>>ey;
		q[1][1]=sx;
		q[1][2]=sy;
		q[1][3]=0;
		while (head<=tail&&f){
			int tx,ty;
			for (int i=1;i<=4;i++){
				tx=q[head][1]+d[i];
				ty=q[head][2]+d[i+1];
				if (tx>0&&tx<=n&&ty>0&&ty<=m&&a[tx][ty]=='.'){
					a[tx][ty]='#';
					tail++;
					q[tail][1]=tx;
					q[tail][2]=ty;
					q[tail][3]=head;
				}
				if (tx==ex&&ty==ey){
					print(tail);
					cout<<endl;
					f=0;
					break;
				}
			}
			head++;
		}
	} 	
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...