跳至正文

USACO 2.4.1 The Tamworth Two 解题报告

  • OI路程

这题模拟的这个细节不用说把?就是俺顺序来,如果不知道的话看我的代码,这部分(deal函数)写的比较清楚,但是比较麻烦的问题是循环多久才结束呢?题目并没有说什么特殊条件那?呵呵,暗示的条件还是有的,在1010的牛和人在每个格子上最多就是4种方向吧?也就是说每个格子对每个人来说都有400种状态,那么400400就是所有的状态,如果在160000种情况都没有相遇的话那么一定是在死循环中间(即死追死跑。) 代码如下: de lang="c"> / LANG: C ID: yylogoo1 PROG: ttwo / #include int map[10][10]; int c[3], f[3]; int way[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; int check(int a, int b) { if(a <0 b a>= 10 || b <= 10 || !map[a][b]){ return 0; } return 1; } void deal(int k[3]) { int t[2]; t[0] = k[0] + way[k[2]][0]; t[1] = k[1] + way[k[2]][1]; if(check(t[0], t[1])){ k[0] = t[0]; k[1] = t[1]; }else{ k[2] = (k[2] + 1) % 4; } } int main(void) { int i, j; char ch; freopen("ttwo.in", "r", stdin); freopen("ttwo.out", "w", stdout); for(i = 0; i <10 i forj="0;" j j ch="getchar();" switchch case mapij="1;" break case C c="i;" c="j;" mapij="1;" break case F f="i;" f="j;" mapij="1;" break getchar fori="0;" i i ifc="= f[0]" c="= f[1]){" break dealc dealf printfdn i return code>

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注