感觉人和牛的移动还有判定都没问题啊,为啥时间只有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