求大佬帮忙,会死循环
查看原帖
求大佬帮忙,会死循环
838542
Never_Gone楼主2023/9/20 17:07
#include<bits/stdc++.h>
#define Max 20

using namespace std;
char  a[Max][Max];
int n,m,x,y,ans,dir1=1,dir2=1;
int dx[5]={0,-1,1,1,-1};

void move1(){
	if(dir1==1 || dir1==3){
		if(a[n][m+dx[dir1]]!='*') m+=dx[dir1];
		else dir1++;
	}
	else{
		if(a[n+dx[dir1]][m]!='*') n+=dx[dir1];
		else dir1++;	
	}
	if(dir1==5) dir1=1;
}

void move2(){
	if(dir2==1 || dir2==3){
		if(a[x][y+dx[dir2]]!='*') y+=dx[dir2];
		else dir2++;
	}
	else{
		if(a[x+dx[dir2]][y]!='*') x+=dx[dir2];
		else dir2++;
	}
	if(dir2==5) dir2=1;
} 

int main()
{
	for(int i=1;i<=10;i++)
		for(int j=1;j<=10;j++){
			cin>>a[i][j];
			if(a[i][j]=='F'){
				n=j;
				m=i;
			}
			if(a[i][j]=='C'){
				x=j;
				y=i;
			}
		} 
	for(int i=0;i<=11;i++){
		a[0][i]='*';
		a[i][0]='*';
		a[11][i]='*'; 
		a[i][11]='*';
	}
	while(n!=x || m!=y){
		move1();
		move2();       
		ans++;
	}
	cout<<ans;
	return 0;
}



2023/9/20 17:07
加载中...