33 求助
查看原帖
33 求助
1120842
XYM20230422楼主2023/12/18 17:25
#include <bits/stdc++.h>
using namespace std;
char map_[12][12];
int now1,now2,c1,c2,fxc,fxf;
int main(){
	for(int i=0;i<=11;i++){
		map_[0][i]='*';
	}
	for(int i=0;i<=11;i++){
		map_[1][i]='*';
	}
	for (int i=1;i<=10;i++){
		map_[i][0]='*';
		map_[i][11]='*';
		for (int j=1;j<=10;j++){
			cin>>map_[i][j];
			if(map_[i][j]=='F'){
				now1=i;
				now2=j;
			}
			if(map_[i][j]=='C'){
				c1=i;
				c2=j;
			}
		}
	}
	for (int i=1;;i++){
		if(fxf==0){
			if(map_[now1-1][now2]=='.'){
				map_[now1][now2]='.';
				map_[now1-1][now2]='F';
				now1=now1-1;
			}
			else if(map_[now1-1][now2]!='.'){
				fxf=(fxf+1)%4;
			}
		}
		else if(fxf==1){
			if(map_[now1][now2+1]=='.'){
				map_[now1][now2]='.';
				map_[now1][now2+1]='F';
				now2=now2+1;
			}
			else if(map_[now1][now2+1]!='.'){
				fxf=(fxf+1)%4;
			}
		}
		else if(fxf==2){
			if(map_[now1+1][now2]=='.'){
				map_[now1][now2]='.';
				map_[now1+1][now2]='F';
				now1=now1+1;
			}
			else if(map_[now1+1][now2]!='.'){
				fxf=(fxf+1)%4;
			}
		}
		else if(fxf==3){
			if(	map_[now1][now2-1]=='.'){
				map_[now1][now2]='.';
				map_[now1][now2-1]='F';
				now2=now2-1;
			}
			else if(map_[now1][now2-1]!='.'){
				fxf=(fxf+1)%4;
			}
		}
		
		if(fxc==0){
			if(map_[c1-1][c2]=='.'){
				map_[c1][c2]='.';
				map_[c1-1][c2]='C';
				c1=c1-1;
			}
			else if(map_[c1-1][c2]!='.'){
				fxc=(fxc+1)%4;
			}
		}
		else if(fxc==1){
			if(map_[c1][c2+1]=='.'){
				map_[c1][c2]='.';
				map_[c1][c2+1]='C';
				c2=c2+1;
			}
			else if(map_[c1][c2+1]!='.'){
				fxc=(fxc+1)%4;
			}
		}
		else if(fxc==2){
			if(map_[c1+1][c2]=='.'){
				map_[c1][c2]='.';
				map_[c1+1][c2]='C';
				c1=c1+1;
			}
			else if(map_[c1+1][c2]!='.'){
				fxc=(fxc+1)%4;
			}
		}
		else if(fxc==3){
			if(map_[c1][c2-1]=='.'){
				map_[c1][c2]='.';
				map_[c1][c2-1]='C';
				c2=c2-1;
			}
			else if(map_[c1][c2-1]!='.'){
				fxc=(fxc+1)%4;
			}
		}
		if(i>=20000){
			cout << 0;
			return 0;
		}
		if(c1==now1&&c2==now2){
			cout << i;
			return 0;
		}
		for (int i=1;i<=10;i++){
			for (int j=1;j<=10;j++){
				cout<<map_[i][j];
			}
			cout<<endl;
		}
		
		cout <<endl<<endl<<endl<<endl;
	}
	
	return 0;
	
}
2023/12/18 17:25
加载中...