qwq 33pts
查看原帖
qwq 33pts
390770
S0CRiA楼主2021/5/25 21:26
//P1518
#include <cstdio>
int fx,fy,ff,cx,cy,cf,ans=0;
bool vis[1600100];
char s[20][20];
inline int getvis(){ return fx+fy*15+cx*150+cy*1500+ff*15000+cf*65000; }

int main(){
	for(int i=1; i<=10; ++i){
		scanf("%s",s[i+1]);
		for(int j=1; j<=10; ++j)
			if(s[i][j]=='F') fx=i,fy=j,s[i][j]='.';
			else if(s[i][j]=='C') cx=i,cy=j,s[i][j]='.';
	}
	vis[getvis()]=true;
	while(fx!=cx||fy!=cy){
		switch(ff){
			case 0: if(s[fx-1][fy]=='.') --fx; else ff=(ff+1)%4; break;
			case 1: if(s[fx][fy+1]=='.') ++fy; else ff=(ff+1)%4; break;
			case 2: if(s[fx+1][fy]=='.') ++fx; else ff=(ff+1)%4; break;
			case 3: if(s[fx][fy-1]=='.') --fy; else ff=(ff+1)%4; break;
		}
		switch(cf){
			case 0: if(s[cx-1][cy]=='.') --cx; else cf=(cf+1)%4; break;
			case 1: if(s[cx][cy+1]=='.') ++cy; else cf=(cf+1)%4; break;
			case 2: if(s[cx+1][cy]=='.') ++cx; else cf=(cf+1)%4; break;
			case 3: if(s[cx][cy-1]=='.') --cy; else cf=(cf+1)%4; break;
		}
		if(vis[getvis()]) return putchar('0')&0;
		vis[getvis()]=true,++ans;
	}
	return printf("%d",ans)&0;
}
2021/5/25 21:26
加载中...