#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怎么办啊?请问应该怎么改?
谢谢大佬帮助