我废了,怎么自己测试卡住了
查看原帖
我废了,怎么自己测试卡住了
1004343
wangjingtian1楼主2024/7/24 11:19
#include <bits/stdc++.h>
using namespace std;
struct node{
	int x,y;
};
int ans;
int n,m;
queue<node> q;
char c[101][101];
int dx[4] = {0,0,-1,1};
int dy[4] = {-1,1,0,0};
//int jx[8] = {0,0,-1,1,-1,1,1,-1};
//int jy[8] = {1,-1,0,0,-1,1,-1,1};
void bfs(char mp[101][101]){
	q.push({1,1});
	while(!q.empty()){
		node p = q.front();
		q.pop();
		if(mp[p.x][p.y]=='l'){
			cout << ans<<endl;
			return ;
		}
		for(int i = 0;i < 4;i++){
			int xl = p.x + dx[i];
			int yl = p.y + dy[i];
			if((yl >= 1) && (yl <= m) && (xl >= 1) && (xl <= n ) && mp[xl][yl] != 'X'){
				q.push({xl,yl});
				mp[xl][yl] = 'X';
				++ans;
			}
		}
	}
	cout << "Poor Harry\n";
}
int main(){
	cin >> n >> m;
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= m;j++){
			cin >> c[i][j];
		}
	}
	while(1){
		int i,j,k,l;
		cin >> i >> j >> k >> l;
		if(i == 0 && j == 0&& k == 0&& l == 0){
			return 0;
		}
		char mp[101][101];
		for(int a = 1;a <= n;a++){
			for(int b = 1;b <= m;b++){
				mp[a][b] = 'X';
			}
		}
		for(int a = 1;a <= n;a++){
			for(int b = 1;b <= m;b++){
				mp[a][b] = c[a][b];
			}
		}
		int a=n,b=m;
		while(mp[a][b] != 'X'){
			mp[a][b++] = 'l';
		}
		a=n,b=m;
		while(mp[a][b] != 'X'){
			mp[a++][b] = 'l';
		}
		a=n,b=m;
		while(mp[a][b] != 'X'){
			mp[a][b--] = 'l';
		}
		a=n,b=m;
		while(mp[a][b] != 'X'){
			mp[a--][b] = 'l';
		}
		a=n,b=m;
		while(mp[a][b] != 'X'){
			mp[a++][b--] = 'l';
		}
		a=n,b=m;
		while(mp[a][b] != 'X'){
			mp[a--][b--] = 'l';
		}
		a=n,b=m;
		while(mp[a][b] != 'X'){
			mp[a--][b++] = 'l';
		}
		a=n,b=m;
		while(mp[a][b] != 'X'){
			mp[a++][b++] = 'l';
		}
		bfs(mp);
	}
}
2024/7/24 11:19
加载中...