题目链接
题目大意:
在一个8x8的方格中你每次可以将一行全部涂成红色或者将一列涂成蓝色。问最后一次操作是什么操作:
- 如果是行操作就输出R
- 如果是列操作就输出B
解题思路:
我们可一枚举每行每列,如果有一行全部是红色的话那就说明最后一次操作是行操作,否则是列操作。反正数据量不大,不过就是16次而已。
我的坑点:
我一开是想着如果每一行的字母都相同的话,那么最后一次就是行操作,否则就是列操作。我忽略了一点,看图吧:
这种情况该输出R,但我的程序他会输出B,显然是错误的,记得要严谨!!!
下面是AC代码:
#include using namespace std; char s[8][9]; bool row(int x){ for(int i = 0; i < 8; i ++ ) { if(s[x][i] != 'R') return false; } return true;} bool columns(int x){ for (int i = 0; i < 8; i ++ ) { if (s[i][x] != 'B') return false; } return true;} void Main(){ for(int i = 0; i < 8; i ++ ) { cin >> s[i]; } for(int i = 0; i < 8; i ++ ) { if (row(i)) { puts("R"); return ; } } for(int i = 0; i < 8; i ++ ) { if (columns(i)) { puts("B"); return ; } }} int main(){ int t; cin >> t; while (t -- ) { Main(); } return 0;}
__EOF__