#include <stdio.h>
#define DEBUG 1
#define TESTCASES 9
char map[11][11];
int cowRow, cowColumn, farmerRow, farmerColumn;
int directionArray[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1};
int cowDirection, farmerDirection;
int isMeet(){
return cowRow == farmerRow && cowColumn == farmerColumn;
}
void move(int *row, int *column, int *direction){
int nextRow = *row + directionArray[*direction][0];
int nextColumn = *column + directionArray[*direction][1];
if (nextRow < 0 || nextRow == 10 || nextColumn < 0 || nextColumn == 10 || map[nextRow][nextColumn] == '*')
*direction = (*direction + 1) % 4;
else {
*row = nextRow;
*column = nextColumn;
}
}
int main(){
#if DEBUG
int testCase;
for (testCase = 1; testCase <= TESTCASES; testCase++){
char inputFileName[20] = "inputx.txt";
inputFileName[5] = '1' + (testCase - 1);
freopen(inputFileName, "r", stdin);
printf("\n#%d\n", testCase);
#endif
int row;
for (row = 0; row < 10; row++){
scanf("%s", map[row]);
int column;
for (column = 0 ; column <= 10; column++){
if (map[row][column] == 'C'){
cowRow = row;
cowColumn = column;
//注意牛的起点要转换成可以经过的点,农民的起点也一样
map[row][column] == '.';
continue;
}
if (map[row][column] == 'F'){
farmerRow = row;
farmerColumn = column;
map[row][column] = '.';
}
}
}
cowDirection = farmerDirection = 0;
int minute;
for (minute = 1; minute <= 1e6; minute++){
move(&cowRow, &cowColumn, &cowDirection);
move(&farmerRow, &farmerColumn, &farmerDirection);
if (isMeet()){
printf("%d\n", minute);
break;
}
}
if (!isMeet())
printf("0\n");
#if DEBUG
}
#endif
return 0;
}
USACO 2.4 The Tamworth Two
最新推荐文章于 2023-01-02 19:02:28 发布