求debug(22)
查看原帖
求debug(22)
1287910
GGG_ggg楼主2024/2/27 13:43
#include<stdio.h>

int movex[4] = {-1,0,1,0};
int movey[4] = {0,1,0,-1};

int map[20][20];
int visit[20][20][4][20][20][4];

void move(int *x,int *y,int *d)
{
	int prex = (*x) + movex[(*d)];
	int prey = (*y) + movey[(*d)];
	if(map[prex][prey] == 0)
	{
		(*d) = ((*d)+1)%4; 
	}
	else
	{
		(*x) = prex;
		(*y) = prey;
	}
}

int main()
{
	int i,j,k;
	char c;
	int cx,cy,fx,fy,cd = 0,fd = 0;
	for(i =1;i<=10;i++)
	{
		for(j = 1;j<=10;j++)
		{
			while((c = getchar())=='\n');
			if(c != '*')map[i][j] = 1;
			if(c == 'C') cx = i,cy = j;
			if(c == 'F') fx = i,fy = j;
		}
	}
	int time = 0;
	while(1)
	{
		time++;
		if(visit[cx][cy][cd][fx][fy][fd])
		{
			printf("0\n");
			return 0;
		}
		visit[cx][cy][cd][fx][fy][fd] = 1;
		move(&cx,&cy,&cd);
		move(&fx,&fy,&fd);
		if(cx==fx&&cy==fy)
		{
			break;
		}
		//puts("u");
	}
	printf("%d\n",time);
	return 0;
}
2024/2/27 13:43
加载中...