本地测批示没有,提交就3个RE

/*函数网 
		main()
	   /     \
	in()	bfs()
		   /     \
		print()  check()
*/
//声明 
#include<iostream>
#include<queue>
#include<stack>
using namespace std;
//定义 
bool R[100][100];//路径 
bool V[100][100];//vis数组 
struct D{//点 
	int x,y;
	int fx,fy;
};
D A[100][100];//answer数组 
int vx[]={0,0,-1,1},vy[]={-1,1,0,0};//上下左右坐标变化 
int main();
//main函数 
int main(){
	void in();//输入函数 
	void bfs();//BFS函数
	in();
	bfs(); 
	return 0;
}
//1级函数 
void in(){
	for(int i=1;i<6;i++)
		for(int j=1;j<6;j++){
			cin>>R[i][j];
			R[i][j]=!R[i][j];
			A[i][j].x=i;
			A[i][j].y=j;
		}
	return;
}
void bfs(){
	void print();//打印数组函数 
	bool check(int,int);//检查路径函数 
	A[1][1].fx=A[1][1].fy=0;
	queue<D> q;//BFS队列
	q.push(A[1][1]);
	while(1){
		D a=q.front();
		q.pop();
//		cout<<a.x<<" "<<a.y<<"\n";
		if(a.x+a.y==10){
			print();
			return;
		}
		for(int i=0;i<4;i++)
			if(check(a.x+vx[i],a.y+vy[i])){
//				cout<<a.x+vx[i]<<" "<<a.y+vy[i]<<"\n";
				V[a.x+vx[i]][a.y+vy[i]]=1;
				A[a.x+vx[i]][a.y+vy[i]].fx=a.x;
				A[a.x+vx[i]][a.y+vy[i]].fy=a.y;
				q.push(A[a.x+vx[i]][a.y+vy[i]]);
			}
	}
	return;
}
//2级函数 
void print(){
	stack<D> s;
	s.push(A[5][5]);
	while(s.top().x+s.top().y!=2)
		//cout<<s.top().fx<<" "<<s.top().fy<<"\n",
		s.push(A[s.top().fx][s.top().fy]);
	while(s.top().x+s.top().y<=10){
		cout<<"("<<s.top().x-1<<", "<<s.top().y-1<<")\n";
		s.pop();
	}
}
bool check(int x,int y){
	cout<<x<<" "<<y<<"\n";
	return x>=0&&y>=0&&!V[x][y]&&R[x][y];
}

1 comments

  • @ 2024-3-14 13:56:15

    注释是我自己写代码的时候帮助理解的,所以,不用我介绍变量了吧~

    • 1

    Information

    ID
    740
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    6
    Tags
    # Submissions
    74
    Accepted
    21
    Uploaded By