0分求调
查看原帖
0分求调
1545016
helloworldhahaha楼主2024/12/5 19:25
#include <iostream>
using namespace std;

bool judge[220000]={false};
char map[12][12]={'*'};
int way[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
bool isvalid(int x, int y, int z){
	return map[x+way[z][0]][y+way[z][1]]!='*';
}

int main(){
	for(int i=1;i<11;i++){
		for(int j=1;j<11;j++){
			cin>>map[i][j];
		}
	}
	int cx,cy,fx,fy,cow=0,farmer=0,t=0;
	for(int i=1;i<11;i++){
		for(int j=1;j<11;j++){
			if(map[i][j]=='C'){
				cx=i,cy=j;
			}
			if(map[i][j]=='F'){
				fx=i,fy=j;
			}
		}
	}
	while(1){
		int num=fx+10*fy+100*cx+1000*cy+10000*(farmer+1)+40000*(cow+1);
		if(judge[num]){
			cout<<0;
			return 0;
		}else judge[num]=true;
		if(isvalid(cx,cy,cow)){
			cx+=way[cow][0];
			cy+=way[cow][1];
		}else{
			cow=(cow+1)%4;
		}
		if(isvalid(fx,fy,farmer)){
			fx+=way[farmer][0];
			fy+=way[farmer][1];
		}else{
			farmer=(farmer+1)%4;
		}
		t++;
		if(cx==fx&&cy==fy) break;
	}
	cout<<t;
	return 0;
}
2024/12/5 19:25
加载中...