求助,下载了测试点#1,测试的答案对了,结果还是不通过
查看原帖
求助,下载了测试点#1,测试的答案对了,结果还是不通过
1497053
Featherwit022楼主2024/12/26 13:02

只AC了3个 #3 #6 #8,其它全WA

#include<iostream>
#include<cstdio>
using namespace std;
int fx,fy,cx,cy,ft,ct;
int map[13][13];
//边界/障碍 0 空地 3 人 1  牛 2  空地 3  空地+人 4  空地+牛 5  空地+人+牛 6   
void showMap(){
	printf("-----------------------\n");
	for(int i=0;i<=11;++i){
		for(int j=0;j<=11;++j){
			printf("%d ",map[i][j]);
		}
		printf("\n");
	}
	printf("-----------------------\n");
}
int main(){
	char x;
	for(int i=1;i<=10;++i){
		for(int j=1;j<=10;++j){
			x=getchar();
			switch(x){
				case '*':map[i][j]=0;break;
				case 'F':map[i][j]=4;fx=i;fy=j;break;
				case 'C':map[i][j]=5;cx=i;cy=j;break;
				case '.':map[i][j]=3;break;
			}
		}
		getchar();
	}
	//showMap();
	int cnt,i,j;
	for(cnt=1;cnt<=10000000;++cnt){
		switch(ft){
			case 0:i=-1;j=0;break;
			case 1:i=0;j=1;break;
			case 2:i=1;j=0;break;
			case 3:i=0;j=-1;break;
		}
		if(map[fx+i][fy+j]!=0){
			map[fx][fy]-=1;
			fx+=i;fy+=j;
			map[fx][fy]+=1;
		}else{
			ft=(ft+1)%4;
		}
		switch(ct){
			case 0:i=-1;j=0;break;
			case 1:i=0;j=1;break;
			case 2:i=1;j=0;break;
			case 3:i=0;j=-1;break;
		}
		if(map[cx+i][cy+j]!=0){
			map[cx][cy]-=2;
			cx+=i;cy+=j;
			map[cx][cy]+=2;
		}else{
			ct=(ct+1)%4;
		}
		if(map[cx][cy]==6){
			cout<<cnt<<endl;
			return 0;
		}
	}
	cout<<0<<endl;
	return 0;
}
 
2024/12/26 13:02
加载中...