第4个测试点WA,89分,求助求助!!
查看原帖
第4个测试点WA,89分,求助求助!!
943870
luogu9999楼主2023/12/1 17:40
#include <bits/stdc++.h>
using namespace std;
char dt[15][15];//存放地图 
//hc,lc,idc:奶牛的位置,朝向 
//hf,lf,idf:农夫的位置 ,朝向 
int hc,lc,hf,lf,cnt,idc,idf,tdz; 
int x[4]={-1,0,1,0};//存放移动方向 
int y[4]={0,1,0,-1};
bool zt[160005];//标记 
void move(int x1,int y1,int id,int h){
	x1+=x[id];
	y1+=y[id];
	if(dt[x1][y1]=='*') if(h==0) idf=(idf+1)%4; else idc=(idc+1)%4;
	else if(h==0) hf=x1,lf=y1;else hc=x1,lc=y1;
}
int main(){
	for(int i=0;i<=11;i++){
		dt[0][i]='*';
		dt[11][i]='*';
		dt[i][0]='*';
		dt[i][11]='*';
	}	
	for(int i=1;i<=10;i++){
		for(int j=1;j<=10;j++){
			cin>>dt[i][j];
			if(dt[i][j]=='C') hc=i,lc=j;
			if(dt[i][j]=='F') hf=i,lf=j;
		}
	}
	while(1){
		move(hf,lf,idf,0);//0为农夫 
		move(hc,lc,idc,1);//1为奶牛 
		tdz=hf+lf*10+hc*100+lc*1000+idf*10000+idc*40000;//专属值 
		if(zt[tdz]){
		    cnt=0;
			break;
		}
		zt[tdz]=1;
		cnt++;
		if(hc==hf&&lc==lf){
		    break;
		}
	}
	cout<<cnt<<endl;
	return 0;
}

第4个测试点总是WA,但是找不出哪里错,麻烦大佬指点指点!!!感谢!

2023/12/1 17:40
加载中...