不知道为什么输出不对
查看原帖
不知道为什么输出不对
671260
Nekomusume楼主2022/1/26 19:12

感觉人和牛的移动还有判定都没问题啊,为啥时间只有2

代码如下:

#include <iostream>

using namespace std;

int ans = 0, flagc = 1, flagf = 1, cx, cy, fx, fy;
//flag是人和牛的方向(1代表北,2代表东,3代表南,4代表西),cx,cy,fx,fy是人和牛的坐标,ans是时间 
int main(){
	char m[15][15];
	for(int i = 1; i <= 10; i++){
		for(int j = 1; j <= 10; j++){
			cin >> m[i][j];//初始化地图 
			if(m[i][j] = 'C'){
				cx = i; cy = j;
			}
			if(m[i][j] = 'F'){
				fx = i; fy = j;
			}//定位人和牛的坐标 
		}
	}
	for(int i = 0; i <= 11; i++){
		m[0][i] = '*';
		m[11][i] = '*';
		m[i][0] = '*';
		m[i][11] = '*';
	}//添加虚拟边框 
	while(true){
		if(flagc == 1){
			if(m[cx - 1][cy] != '*'){
				cx--; ans++;
			}else {flagc = 2;ans++;}
		}else if(flagc == 2){
			if(m[cx][cy + 1] != '*'){
				cy++; ans++;
			}else {flagc = 3;ans++;}
		}else if(flagc == 3){
			if(m[cx + 1][cy] != '*'){
				cx++; ans++;
			}else {flagc = 4;ans++;}
		}else{
			if(m[cx][cy - 1] != '*'){
				cy--; ans++;
			}else {flagc = 1;ans++;}
		}
		if(flagf == 1){
			if(m[fx - 1][fy] != '*'){
				fx--; ans++;
			}else {flagf = 2;ans++;}
		}else if(flagf == 2){
			if(m[fx][fy + 1] != '*'){
				fy++; ans++;
			}else {flagf = 3;ans++;}
		}else if(flagf == 3){
			if(m[fx + 1][fy] != '*'){
				fx++; ans++;
			}else {flagf = 4;ans++;}
		}else{
			if(m[fx][fy - 1] != '*'){
				fy--; ans++;
			}else {flagf = 1;ans++;}
		}if(cx == fx && cy == fy){
			cout << ans << endl;
			return 0;
		}//人和牛的移动 
		if(ans > 100000){
			cout << 0 << endl;
			return 0;
		}//判断是否永远遇不到了,时间超过100000基本遇不到了吧。 
	}
	return 0;
}

写这么长出了个bug不好找,还舍不得重写,哭了QWQ

2022/1/26 19:12
加载中...