89分求助,TLE应该怎么改?
查看原帖
89分求助,TLE应该怎么改?
268180
hgy_hjl楼主2020/9/21 08:39
#include <stdio.h> 
//#include <windows.h>

int main()
{
	char map[10][10];
	int positionF[2];
	int positionC[2];
	int move[4][2] =
	{
		{-1, 0},	//向北 
		{0, 1},		//向东 
		{1, 0},		//向南 
		{0, -1}		//向西 
	};
	int dir1 = 0;
	int dir2 = 0;
	int temp1, temp2;
	int minute = 0;
	int mark[10][10][4][10][10][4] = {0};
	
//	for(int i = 0; i < 10; i++)
//	{
//		for(int ii = 0; ii < 10; ii++)
//		{
//			for(int iii = 0; iii < 1; iii++)
//			{
//				for(int j = 0; j < 10; j++)
//				{
//					for(int jj = 0; jj < 10; jj++)
//					{
//						for(int jjj = 0; jjj < 1; jjj++)
//						{
//							mark[i][ii][iii][j][jj][jjj] = -1;
//						}
//					}
//				}
//			}
//		}
//	} 
	
	for(int i = 0; i < 10; i++)
	{
		for(int j = 0; j < 10; j++)
		{
			scanf("%c", &map[i][j]);
			
			if(map[i][j] == 'F')
			{
				positionF[0] = i;
				positionF[1] = j;
			}
			else if(map[i][j] == 'C')
			{
				positionC[0] = i;
				positionC[1] = j;
			}
		}
		while( getchar() != '\n' );
	}
	
	mark[positionC[0]][positionC[1]][dir1][positionF[0]][positionF[1]][dir2] = 1;
	
	while(1)
	{
		temp1 = positionC[0] + move[dir1][0];
		temp2 = positionC[1] + move[dir1][1];
		
		if(temp1 < 10 && temp1 >= 0 && temp2 < 10 && temp2 >= 0 && map[temp1][temp2] != '*')
		{
			map[positionC[0]][positionC[1]] = '.';
			map[temp1][temp2] = 'C';
			positionC[0] = temp1;
			positionC[1] = temp2;
		}
		else
		{
			dir1 = (dir1 + 1) % 4;
		}
		
		temp1 = positionF[0] + move[dir2][0];
		temp2 = positionF[1] + move[dir2][1];
		
		if(temp1 < 10 && temp1 >= 0 && temp2 < 10 && temp2 >= 0 && map[temp1][temp2] != '*')
		{
			map[positionF[0]][positionF[1]] = '.';
			map[temp1][temp2] = 'F';
			positionF[0] = temp1;
			positionF[1] = temp2;
		}
		else
		{
			dir2 = (dir2 + 1) % 4;
		}
		
		minute++;
		
		if( ( positionF[0] == positionC[0] && positionF[1] == positionC[1] ) )
		{
			break;
		}
		else if( mark[positionC[0]][positionC[1]][dir1][positionF[0]][positionF[1]][dir2] == 1)
		{
			minute = 0;
			break;
		}
		else
			mark[positionC[0]][positionC[1]][dir1][positionF[0]][positionF[1]][dir2] = 1; 
	}
	
	printf("%d", minute);
	
	return 0;
}

TLE怎么办啊?请问应该怎么改?
谢谢大佬帮助

2020/9/21 08:39
加载中...