暂时没考虑没相遇的情况,但是这份代码样例输出不了,求debug!
查看原帖
暂时没考虑没相遇的情况,但是这份代码样例输出不了,求debug!
956316
77Glorious楼主2024/2/22 21:20
#include<bits/stdc++.h>
using namespace std;
char a[15][15],step;//格子 
int fx,fy,cx,cy;
int tf=0,tc=0;//农夫和牛的转向值 
int tx[4]={-1,0,1,0},ty[4]={0,1,0,-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')
			{
				fx=i; fy=j;
			}
			else if(a[i][j]=='C')
			{
				cx=i; cy=j;//保存农夫和牛牛的坐标 
			}
		}
	
	for(int i=0;i<=11;i++)
		a[11][i]=a[i][11]=a[0][i]=a[i][0]='*';//边缘障碍物设定,便不用再用数字范围判断移动的时候是否越界,只需看是否移动到*即可 
	
		/*for(int i=0;i<=11;i++)
		{
				for(int j=0;j<=11;j++)
					cout<<a[i][j];
				cout<<endl;	
		}//用来检查边界是否设置完全的*/
	
	while(fx!=cx && fy!=cy)//没有相遇
	{// && 1<=cx&&cx<=10 && 1<=cy&&cy<=10 && 1<=fx&&fx<=10 && 1<=fy&&fy<=10
	
		//北东南西
		
		if(a[fx+tx[tf]][fy+ty[tf]]=='*') tf=(tf+1)%4;//碰到障碍物转向
		else fx+=tx[tf],fy+=ty[tf];
		if(a[cx+tx[tc]][cy+ty[tc]]=='*') tc=(tc+1)%4;//碰到障碍物转向
		else cx+=tx[tc],cy+=ty[tc];				
		step++;
	} 
	cout<<step; 
	return 0;
}
2024/2/22 21:20
加载中...