收获了一堆re
查看原帖
收获了一堆re
609160
SDftx楼主2021/12/28 23:50
#include<bits/stdc++.h>
using namespace std;
int sum,xf,yf,df,xc,yc,dc,test;//0北,1东,2南,3西 
int movex[4]={-1,0,1,0},movey[4]={0,1,0,-1};
bool s[330005];
char mp[10][10]; 
int main()
{
	for(int i=0;i<10;i++)
	{
		scanf("%s",mp[i]);
	}
	/*起始位置有问题 
	for(int i=0;i<10;i++)
	{
		for(int k=0;k<10;k++)
		{
			scanf("%c",&mp[i][k]);
			if(mp[i][k]=='C') xc=i,yc=k;
			if(mp[i][k]=='F') xf=i,yf=k;
		}
	}*/
	for(int i=0;i<10;i++)
	for(int j=0;j<10;j++)
	{
		if(mp[i][j]=='C')
		{
			xc=i,yc=j;
		}
		if(mp[i][j]=='F')
		{
			xf=i,yf=j;
		}
	}
	dc=df=0;
	while(1)
	{
		test=xf+yf*10+xc*100+yc*1000+df*10000+dc*100000;
		if(s[test])
		{
			printf("0");
			break;
		}
		s[test]=true;
		if(xc==xf&&yc==yf)
		{
			printf("%d",sum);
			break;
		}
		if(mp[xc+movex[dc]][yc+movey[dc]]=='*'||(xc+movex[dc]>=10)||(yc+movey[dc]>=10)||(xc+movex[dc]<0)||(yc+movey[dc]<0))
		dc=(dc+1)%4;
		else
		{
			xc+=movex[dc];
			yc+=movey[dc];
		}
		if(mp[xf+movex[df]][yf+movey[df]]=='*'||(xf+movex[df]>=10)||(yf+movey[df]>=10)||(xf+movex[df]<0)||(yf+movey[df]<0))
		df=(df+1)%4;
		else
		{
			xf+=movex[df];
			yf+=movey[df];
		}
		sum++;
	}
	return 0;
}

为什么第一个样例在自己跑没问题,一提交就re,另外scanf为什么也会出错

2021/12/28 23:50
加载中...