为什么换成cin和cout就对了,而用scanf和printf就是错的?
查看原帖
为什么换成cin和cout就对了,而用scanf和printf就是错的?
1385586
XueYun楼主2024/10/15 15:33
#include<queue>
#include<iostream>
using namespace std;
#define re register
struct Node{
	int x,y,ans;
}Used;
queue<Node>q;
int N,Map[101][101],ans;
bool vis[101][101];
char c;
int TypeX[4]={0,1,0,-1};
int TypeY[4]={1,0,-1,0};
int main(){
	cin>>N;
	for(re int i=1;i<=N;++i)
		for(re int j=1;j<=N;++j){
			cin>>c;
			if(c=='A'){
				Map[i][j]=114;
				Used.x=i;
				Used.y=j;
			}
			if(c=='B')Map[i][j]=514;
			if(c=='+')Map[i][j]=1;
		}
	Used.ans=0;
	q.push(Used);
	while(!q.empty()){
		Used=q.front();
		q.pop();
		if(Map[Used.x][Used.y]==514){
			cout<<Used.ans;
			return 0;
		}
		if(!vis[Used.x][Used.y]){
			vis[Used.x][Used.y]=1;
			for(re int i=0;i<4;++i){
				Node f;
				f.x=Used.x+TypeX[i];
				f.y=Used.y+TypeY[i];
				f.ans=Used.ans+1;
				if(f.x>0&&f.y>0&&f.x<=N&&f.y<=N){
					if(Map[f.x][f.y]!=Map[Used.x][Used.y])
						q.push(f);
				}
			}
		}
	}
	cout<<-1;
	return 0;
}
2024/10/15 15:33
加载中...