55分球条
查看原帖
55分球条
1338740
_User114514_楼主2024/7/26 14:33
#include<bits/stdc++.h>
using namespace std;
const int n=20;
string a[n];
struct node{
	int x,y;
	int dx,dy;
	int kinds;//1表示上,2表示右,3表示下,4表示左 
}fj,cow;
int ans;
void movefj(int x,int y){
	int xx=fj.dx+x,yy=fj.dy+y;
	if(xx>=0&&xx<n&&yy>=0&&yy<n&&a[xx][yy]!='*')fj.x=xx,fj.y=yy;//沿着以前方向继续走 
	else{//转方向 
		if(fj.dx==-1&&fj.dy==0){//上变右 
			fj.dx=0,fj.dy=1,fj.kinds=2; 
		}else if(fj.dx==0&&fj.dy==1){//右变下 
			fj.dx=1,fj.dy=0,fj.kinds=3;
		}else if(fj.dx==1&&fj.dy==0){//下变左 
			fj.dx=0,fj.dy=-1,fj.kinds=4;
		}else if(fj.dx==0&&fj.dy==-1){//左变上 
			fj.dx=-1,fj.dy=0,fj.kinds=1;
		}
	}
} 
void movecow(int x,int y){
	int xx=cow.dx+x,yy=cow.dy+y;
	if(xx>=0&&xx<n&&yy>=0&&yy<n&&a[xx][yy]!='*')cow.x=xx,cow.y=yy;//沿着以前方向继续走 
	else{//转方向 
		if(cow.dx==-1&&cow.dy==0){//上变右 
			cow.dx=0,cow.dy=1,cow.kinds=2; 
		}else if(cow.dx==0&&cow.dy==1){//右变下 
			cow.dx=1,cow.dy=0,cow.kinds=3;
		}else if(cow.dx==1&&cow.dy==0){//下变左 
			cow.dx=0,cow.dy=-1,cow.kinds=4;
		}else if(cow.dx==0&&cow.dy==-1){//左变上 
			cow.dx=-1,cow.dy=0,cow.kinds=1;
		}
	}
}
int main(){
	for(int i=0;i<n;i++)cin>>a[i];
	for(int i=0;i<n;i++)
	for(int j=0;j<n;j++){
		if(a[i][j]=='C')cow.x=i,cow.y=j,cow.dx=-1,cow.dy=0,cow.kinds=1;
		else if(a[i][j]=='F')fj.x=i,fj.y=j,fj.dx=-1,fj.dy=0,fj.kinds=1; 
	}
	while(!(fj.x==cow.x&&fj.y==cow.y)){
		movefj(fj.x,fj.y);
		movecow(cow.x,cow.y);
		ans++;
		if(ans>10000000){
		    cout<<0<<"\n";
		    return 0;
		}
	}
	cout<<ans;
	return 0;
}
2024/7/26 14:33
加载中...