1742C

题目链接

题目大意:

在一个8×8的方格中你每次可以将一行全部涂成红色或者将一列涂成蓝色。问最后一次操作是什么操作:

  1. 如果是行操作就输出R
  2. 如果是列操作就输出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;
}

 

Tags: