为什么会编译失败
查看原帖
为什么会编译失败
730192
gaomingyang101011楼主2024/8/23 16:12
#include<iostream>
#include<queue>
using namespace std;
const int dax[]={0,0,1,-1};
const int day[]={1,-1,0,0};
const int dbx[]={0,0,2,-2};
const int dby[]={2.-2,0,0};
const int dcx[]={1,1,-1,-1};
const int dcy[]={1,-1,1,-1};
int n;
char a[1205][1205];
int ans[1205][1205];
struct node{
	int x;
	int y;
};
void bfs(){
	queue<node> q;
	if(a[1][1]!='*'){
		q.push({1,1});
		ans[1][1]=1;
	}
	if(a[1][n]!='*'){
		q.push({1,n});
		ans[1][n]=1;
	}
	if(a[n][1]!='*'){
		q.push({n,1});
		ans[n][1]=1;
	}
	while(q.size()){
		int bx=q.front().x;
		int by=q.front().y;
		q.pop();
		if(a[bx][by]=='A'){
			for(int i=0;i<4;i++){
				if(bx+dax[i]>=1&&bx+dax[i]<=n&&by+day[i]>=1&&by+day[i]<=n&&(ans[bx+dax[i]][by+day[i]]==0||ans[bx+dax[i]][by+day[i]]>ans[bx][by]+1)&&a[bx+dax[i]][by+day[i]]!='*'){
					ans[bx+dax[i]][by+day[i]]=ans[bx][by]+1;
					q.push({bx+dax[i],by+day[i]});
				}
			}
		}
		else if(a[bx][by]=='B'){
			for(int i=0;i<4;i++){
				if(bx+dbx[i]>=1&&bx+dbx[i]<=n&&by+dby[i]>=1&&by+dby[i]<=n&&(ans[bx+dbx[i]][by+dby[i]]==0||ans[bx+dbx[i]][by+dby[i]]>ans[bx][by]+1)&&a[bx+dbx[i]][by+dby[i]]!='*'){
					ans[bx+dbx[i]][by+dby[i]]=ans[bx][by]+1;
					q.push({bx+dbx[i],by+dby[i]});
				}
			}
		}
		else{
			for(int i=0;i<4;i++){
				if(bx+dcx[i]>=1&&bx+dcx[i]<=n&&by+dcy[i]>=1&&by+dcy[i]<=n&&(ans[bx+dcx[i]][by+dcy[i]]==0||ans[bx+dcx[i]][by+dcy[i]]>ans[bx][by]+2)&&a[bx+dcx[i]][by+dcy[i]]!='*'){
					ans[bx+dcx[i]][by+dcy[i]]=ans[bx][by]+2;
					q.push({bx+dcx[i],by+dcy[i]});
				}
			}
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	if(n<=1) cout<<0;
	else{
		bfs();
		if(ans[n][n]==0) cout<<"No answer";
		else cout<<ans[n][n];
	}
	return 0;
}
2024/8/23 16:12
加载中...