Little Artem
题意
要求给一个
n
∗
m
n*m
n∗m 的板子中的每一个小格子涂上黑或者白两种颜色,对于一个格子而言,如果与它相邻的格子中有和它异色的,那么可以称这个格子是有效的,需要输出一种涂法,使得有效的 黑色格子数=白色格子数+1,即 B = W + 1 。
给出的n,m保证一定存在一种涂法满足上述条件。
思路
按照CF常年第一题的特性,一定有什么及其简单的方法可以满足上面这个条件。
按照这个思路,我们尝试让有效的黑色格子数只有一个,有效的白色格子数只有两个,那么就能满足上面的条件。
具体分为如下两种情况:
- 板子只有一行或者一列:将W放在中间,如:BWBBBBB
- 其余情况:W放左上角,其他全B
WBBB
BBBB
BBBB
后来我发现, n 和 m 都是大于1的,也就是只用第二种情况就行了…
代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
using namespace std;
int main()
{
int t;
cin >> t;
int n,m;
while(t--){
cin >> n >> m;
if(n==1){
for(int i = 1; i <= m; ++i){
if(i==2)
printf("W");
else
printf("B");
}
printf("\n");
}
else if(m==1){
for(int i = 1; i <= n; ++i){
if(i==2)
printf("W\n");
else
printf("B\n");
}
}
else{
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j){
if(i==1&&j==1)
printf("W");
else
printf("B");
}
printf("\n");
}
}
}
return 0;
}
碎碎念
唉,这种题有时候确实不好想,挺耽误时间的。
就使劲找规律,找特例,找通用解。