首页 > 其他 > 详细

Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)

时间:2014-03-28 13:00:31      阅读:381      评论:0      收藏:0      [点我收藏+]

  A. Two Semiknights Meet

  题目大意:有一个8x8的棋盘,上面放有两个骑士,骑士以“田字”的方式走。每个方格都被定义为good或者bad,问骑士能否在good的格子中相遇?

  由于骑士最初位于good的格子中,并且骑士可以按原路返回,所以只需判断骑士是否能够相遇就行了(相遇后可以返回任意一个骑士的初始位置)。根据骑士的移动特性,两个骑士位置的行和列之差应该为4的倍数。

  自己开始的时候,还试图计算相遇位置,然后bfs逐个验证,想麻烦了...

bubuko.com,布布扣
 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cstdlib>
 5 using namespace std;
 6 typedef pair<int, int> pii;
 7 
 8 const int N = 8;
 9 int m[N][N];
10 pii knight[2];
11 
12 bool judge()
13 {
14     int row_diff = abs(knight[0].first - knight[1].first);
15     int col_diff = abs(knight[0].second - knight[1].second);
16     if (row_diff % 4 != 0 || col_diff % 4 != 0)  return false;
17     return true;
18 }
19 
20 int main()
21 {
22 #ifdef LOCAL
23     freopen("in", "r", stdin);
24 #endif
25     int T;
26     scanf("%d", &T);
27     getchar();
28     while (T--)
29     {
30         // read data
31         char s[20];
32         int p = 0;
33         memset(m, 0, sizeof(m));
34         for (int i = 0; i < 8; ++i)
35         {
36             gets(s);
37             for (int j = 0; j < 8; ++j)
38             {
39                 if (s[j] == #)  m[i][j] = 1;
40                 else if (s[j] == K)
41                 {
42                     m[i][j] = 1;
43                     knight[p++] = make_pair(i,j);
44                 }
45             }
46         }
47         if (T)  gets(s);
48 
49         if (judge())  printf("YES\n");
50         else  printf("NO\n");
51     }
52     return 0;
53 }
A

 

Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧),布布扣,bubuko.com

Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)

原文:http://www.cnblogs.com/xiaobaibuhei/p/3425006.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!