AOJ 667.抢占白房子

Time Limit: 1000 ms   Case Time Limit: 1000 ms   Memory Limit: 64 MB
Total Submission: 79   Submission Accepted: 25
 
Description
在一个8×8的宫格图中,每个格子要么是白色,要么是黑色,且相邻的两个格子的颜色一定不同;已知左上角(1,1)的格子的颜色为白色。现给出用字符描述的该图G,如果有G(i,j)='F',则说明从上向下数的第i行(从1开始数),从左向右数的第j行(从1开始数)交叉的格子被占领,否则这个格子是空的,未被占领。
求出被占领的白格子数量。

 

Input
单组数据
一个8×8的地图,具体参考输入样例。

 

Output
一个整数:被占领的白格子数量。

 

Sample Input
Original Transformed
........
..F.....
.....F..
.....F..
........
........
.......F
.F......

 

Sample Output
Original Transformed
2

若从(0,0)开始,则横坐标和纵坐标对2取余后再取反为真的为白房子。

输入读到'F'时,!((x%2)^(y%2))判断即可

 1 /*
 2 By:OhYee
 3 Github:OhYee
 4 Email:oyohyee@oyohyee.com
 5 */
 6 #include <cstdio>
 7 #include <algorithm>
 8 #include <cstring>
 9 #include <cmath>
10 #include <string>
11 #include <iostream>
12 #include <vector>
13 #include <list>
14 #include <stack>
15 using namespace std;
16  
17 #define REP(n) for(int o=0;o<n;o++)
18  
19 int main() {
20     int cnt = 0;
21     for(int i = 0;i < 8;i++)
22         for(int j = 0;j < 8;j++) {
23             char temp;
24             scanf("\n%c\n",&temp);
25             //printf("i=%d j=%d -> %c\n",i,j,temp);
26             if(temp == 'F')
27                 if(!((i % 2) ^ (j % 2)))//奇偶性相同的为白色,对2取模后异或取反
28                     cnt++;
29         }
30     printf("%d\n",cnt);
31     return 0;
32 }

 

posted @ 2016-03-12 19:49  OhYee  阅读(245)  评论(0编辑  收藏  举报