USACO 2.4 The Tamworth Two

TASK: ttwo
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.000 secs, 3180 KB]
   Test 2: TEST OK [0.000 secs, 3180 KB]
   Test 3: TEST OK [0.000 secs, 3180 KB]
   Test 4: TEST OK [0.000 secs, 3180 KB]
   Test 5: TEST OK [0.000 secs, 3180 KB]
   Test 6: TEST OK [0.000 secs, 3180 KB]
   Test 7: TEST OK [0.000 secs, 3180 KB]
   Test 8: TEST OK [0.000 secs, 3180 KB]
   Test 9: TEST OK [0.000 secs, 3180 KB]

All tests OK.
1 /*
2 PROG: ttwo
3 ID: jiafeim1
4 LANG: C++
5 */
6
7
8 #include <iostream>
9 #include <fstream>
10
11 using namespace std;
12
13 bool haveDo[10][10][4][10][10][4]={false};
14 char map[13][13];
15
16 int ward[4][2] = {{-1,0},{0,1},{1,0},{0,-1}};
17
18 struct fc
19 {
20 fc():ward(0){}
21 int ward;
22 int row;
23 int column;
24 };
25 fc farmer,cow;
26
27 int main()
28 {
29 ifstream fin("ttwo.in");
30 ofstream fout("ttwo.out");
31
32 for(int i = 0;i!=10;++i)
33 for(int j = 0 ;j!=10;++j)
34 {
35 fin>>map[i][j];
36 if(map[i][j] == 'F')
37 {
38 farmer.row = i;
39 farmer.column = j;
40 }
41 if(map[i][j] == 'C')
42 {
43 cow.row = i;
44 cow.column = j;
45 }
46 }
47 int time = 1;
48 for(;;++time)
49 {
50 int next_row = farmer.row+ward[farmer.ward][0];
51 int next_column = farmer.column+ward[farmer.ward][1];
52 if(next_row<0 || next_row>=10 || next_column<0 || next_column>=10 || map[next_row][next_column] == '*')
53 {
54 ++farmer.ward;
55 if(farmer.ward>=4) farmer.ward = 0;
56 }
57 else
58 {
59 farmer.row = next_row;
60 farmer.column = next_column;
61 }
62
63 next_row = cow.row+ward[cow.ward][0];
64 next_column = cow.column+ward[cow.ward][1];
65 if(next_row<0 || next_row>=10 || next_column<0 || next_column>=10 || map[next_row][next_column] == '*')
66 {
67 ++cow.ward;
68 if(cow.ward>=4) cow.ward = 0;
69 }
70 else
71 {
72 cow.row = next_row;
73 cow.column = next_column;
74 }
75
76 if(farmer.column == cow.column && farmer.row == cow.row)
77 {
78 fout<<time<<endl;
79 break;
80 }
81
82 if(haveDo[farmer.row][farmer.column][farmer.ward][cow.row][cow.column][cow.ward])
83 {
84 fout<<0<<endl;
85 break;
86 }
87 else
88 {
89 haveDo[farmer.row][farmer.column][farmer.ward][cow.row][cow.column][cow.ward] = true;
90 }
91
92 }
93
94 fin.close();
95 fout.close();
96 return 0;
97 }
posted @ 2011-05-07 23:36  幻魇  阅读(249)  评论(0编辑  收藏  举报