测试点4,5wa了,但本地评测的结果和期望输出又是相同的,求助大佬!!!
查看原帖
测试点4,5wa了,但本地评测的结果和期望输出又是相同的,求助大佬!!!
886171
VioletEmt楼主2023/2/4 13:27
#include<iostream>
#include<cstdio>
//#include<stdlib.h>
//#include<windows.h>
using namespace std;
	int main()
		{
			char map[10][10];
			char sign_map_f[2][10][10]={0},sign_map_c[2][10][10]={0};//用于判断是否会循环 
			
			for(int i=0;i<10;i++)
				for(int j=0;j<10;j++)
					cin>>map[i][j];
					
			char direction_c[4]={'n','e','s','w'},direction_f[4]={'n','e','s','w'};
			int i_c,j_c,i_f,j_f,n_c=0,n_f=0;
			
			for(int i=0;i<10;i++)
				for(int j=0;j<10;j++)
					{
						if(map[i][j]=='C') i_c=i,j_c=j;
						if(map[i][j]=='F') i_f=i,j_f=j;
					}
			int des_c_i=i_c,des_c_j=j_c,des_f_i=i_f,des_f_j=j_f;
					
			int step=0;
			
			while(1)
				{
					n_c%=4,n_f%=4;
					
					//记录牛的位置
					sign_map_c[1][i_c][j_c]=1; 
					//记录牛的方向
					sign_map_c[0][i_c][j_c]=n_c;
					//记录农民的位置
					sign_map_f[1][i_f][j_f]=1; 
					//记录农民的方向
					sign_map_f[0][i_f][j_f]=n_f;
					
					//牛的行动 
					if(direction_c[n_c]=='w')
						{
							if(j_c>0 && map[i_c][j_c-1]!='*')
								{
									map[i_c][j_c]='.';
									j_c--;
									map[i_c][j_c]='C';
								}
							else
								{
									n_c++;
								}
						}
					if(direction_c[n_c]=='s')
						{
							if(i_c<9 && map[i_c+1][j_c]!='*')
								{
									map[i_c][j_c]='.';
									i_c++;
									map[i_c][j_c]='C';
								}
							else
								{
									n_c++;
								}
						}
					if(direction_c[n_c]=='e')
						{
							if(j_c<9 && map[i_c][j_c+1]!='*')
								{
									map[i_c][j_c]='.';
									j_c++;
									map[i_c][j_c]='C';
								}
							else
								{
									n_c++;
								}
						}
					if(direction_c[n_c]=='n')
						{
							if(i_c>0 && map[i_c-1][j_c]!='*')
								{
									map[i_c][j_c]='.';
									i_c--;
									map[i_c][j_c]='C';
								}
							else
								{
									n_c++; 
								}
						}
					
					
					
					//农民的行动 
					if(direction_f[n_f]=='w')
						{
							if(j_f>0 && map[i_f][j_f-1]!='*')
								{
									map[i_f][j_f]='.';
									j_f--;
									map[i_f][j_f]='F';
								}
							else
								{
									n_f++;
								}
						}
					if(direction_f[n_f]=='s')
						{
							if(i_f<9 && map[i_f+1][j_f]!='*')
								{
									map[i_f][j_f]='.';
									i_f++;
									map[i_f][j_f]='F';
								}
							else
								{
									n_f++;
								}
						}
					if(direction_f[n_f]=='e')
						{
							if(j_f<9 && map[i_f][j_f+1]!='*')
								{
									map[i_f][j_f]='.';
									j_f++;
									map[i_f][j_f]='F';
								}
							else
								{
									n_f++;
								}
						}
					if(direction_f[n_f]=='n')
						{
							if(i_f>0 && map[i_f-1][j_f]!='*')
								{
									map[i_f][j_f]='.';
									i_f--;
									map[i_f][j_f]='F';
								}
							else
								{
									n_f++;
								}
						}
						
					
					
					step++;
					
					//显示出位置
//					for(int i=0;i<10;i++)
//						{
//							cout<<endl;
//							for(int j=0;j<10;j++)
//								{
//									cout<<map[i][j]<<" ";
//								}
//						 } 
//					Sleep(10);
//					system("cls");
					
					if(i_c==i_f && j_c==j_f)
						{
							cout<<step;
							break;
						}//相遇条件 
						
//					if(des_c_i==i_c && des_c_j==j_c && des_f_i==i_f && des_f_j==j_f && n_c==0 && n_f==0)
//						{
//							cout<<"0";
//							break;
//						}
					//终止条件 
					if(sign_map_c[0][i_c][j_c]==n_c && sign_map_f[0][i_f][j_f]==n_f && sign_map_c[1][i_c][j_c]==1 && sign_map_f[1][i_f][j_f]==1)
						{
							cout<<"0";
							break;
						}
				}
			
			return 0;
		 } 
2023/2/4 13:27
加载中...