1742C
题目链接
题目大意:
在一个8×8的方格中你每次可以将一行全部涂成红色或者将一列涂成蓝色。问最后一次操作是什么操作:
- 如果是行操作就输出R
- 如果是列操作就输出B
解题思路:
我们可一枚举每行每列,如果有一行全部是红色的话那就说明最后一次操作是行操作,否则是列操作。反正数据量不大,不过就是16次而已。
我的坑点:
我一开是想着如果每一行的字母都相同的话,那么最后一次就是行操作,否则就是列操作。我忽略了一点,看图吧:
这种情况该输出R,但我的程序他会输出B,显然是错误的,记得要严谨!!!
下面是AC代码:
#include <bits/stdc++.h>
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;
}