悬关,如何判相遇?
查看原帖
悬关,如何判相遇?
1252442
lucy2012楼主2024/3/17 13:29

感觉问题挺多的,请随意喷

#include<bits/stdc++.h>
using namespace std;
char ch[15][15];
int x,y,m,n,xx,yy,mm,nn,sum=0,lip=0;
int main(){
    for(int i=0;i<=11;i++){
		for(int j=0;j<=11;j++){
			if(i==0||i==11||j==0||j==11)
			    ch[i][j]='*';
		}
	}
	for(int i=1;i<=10;i++){
		for(int j=1;j<=10;j++){
			cin>>ch[i][j];
			if(ch[i][j]=='F'){x=i;y=j;xx=i;yy=j;}
			if(ch[i][j]=='C'){m=i;n=j;mm=i;nn=j;}
		}   
	}
	int num[3]={0,0,0};
	while(1){
	    if(ch[x][y]==ch[xx][yy]&&ch[m][n]==ch[mm][nn]&&lip==1){cout<<"0";return 0;}
		for(int i=1;i<=2;i++){
			if(num[i]==0)	{
				if(ch[x-1][y]=='*'){num[i]=1;continue;}
				x--; 
				lip=1;  
			}
			if(num[i]==1){	
				if(ch[x][y-1]=='*'){num[i]=2;continue;}
				y--; 
				lip=1; 
			}
			if(num[i]==2)	{
				if(ch[x+1][y]=='*'){num[i]=3;continue;}
				x++;  
				lip=1; 
			}
			if(num[i]==3)	{
				if(ch[x][y+1]=='*'){num[i]=0;continue;}
				y++;
				lip=1;   
			}
		}
		sum++;
		if(x==m&&y==n){
			cout<<sum;
			return 0;
		}
	}
	return 0;
}	
2024/3/17 13:29
加载中...