Toastman came up with a very easy task. He gives it to Appleman, but Appleman doesn't know how to solve it. Can you help him?
Given a n × n checkerboard. Each cell of the board has either character 'x', or character 'o'. Is it true that each cell of the board has even number of adjacent cells with 'o'? Two cells of the board are adjacent if they share a side.
The first line contains an integer n (1 ≤ n ≤ 100). Then n lines follow containing the description of the checkerboard. Each of them contains n characters (either 'x' or 'o') without spaces.
Print "YES" or "NO" (without the quotes) depending on the answer to the problem.
3 xxo xox oxx
YES
4 xxxo xoxo oxox xxxx
NO
代码如下:
#include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; int n; char map[110][110]; const int dir[4][2] = {0,-1,0,1,-1,0,1,0}; int main() { int ans; bool flag; int i,j; while(scanf("%d",&n)!=EOF) { getchar(); memset(map,'x',sizeof(map)); for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) map[i][j] = getchar(); getchar(); } flag = true; for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { ans = 0; for(int k = 0; k < 4; k++) { int x = i+dir[k][0]; int y = j+dir[k][1]; if(map[x][y] == 'o') ans++; } if(ans&1) { flag = false; break; } } } flag?puts("YES"):puts("NO"); } return 0; }
本文介绍了一个简单的编程挑战:验证一个n×n的棋盘上每个格子周围是否有偶数个'o'字符。通过遍历棋盘并计数相邻的'o'来判断条件是否满足,并给出了完整的C++实现代码。
1340

被折叠的 条评论
为什么被折叠?



