A. Little Artem

Young boy Artem tries to paint a picture, and he asks his mother Medina to help him. Medina is very busy, that’s why she asked for your help.

Artem wants to paint an n×m board. Each cell of the board should be colored in white or black.

Lets B be the number of black cells that have at least one white neighbor adjacent by the side. Let W be the number of white cells that have at least one black neighbor adjacent by the side. A coloring is called good if B=W+1.

The first coloring shown below has B=5 and W=4 (all cells have at least one neighbor with the opposite color). However, the second coloring is not good as it has B=4, W=4 (only the bottom right cell doesn’t have a neighbor with the opposite color).

Please, help Medina to find any good coloring. It’s guaranteed that under given constraints the solution always exists. If there are several solutions, output any of them.

Input
Each test contains multiple test cases.

The first line contains the number of test cases t (1≤t≤20). Each of the next t lines contains two integers n,m (2≤n,m≤100) — the number of rows and the number of columns in the grid.

Output
For each test case print n lines, each of length m, where i-th line is the i-th row of your colored matrix (cell labeled with ‘B’ means that the cell is black, and ‘W’ means white). Do not use quotes.

It’s guaranteed that under given constraints the solution always exists.

Example
inputCopy
2
3 2
3 3
outputCopy
BW
WB
BB
BWB
BWW
BWB
Note
In the first testcase, B=3, W=2.

In the second testcase, B=5, W=4. You can see the coloring in the statement.

思路:其实这就是一个签到题,题目的要满足B = W+1;所有我就直接BWBW这样铺了,如果n*m 是偶数的话就把第一行第二个的W变成B就行。

#include<bits/stdc++.h>
using namespace std;
signed main()
{
	int T;
	cin >> T;
	while(T--){
		int n,m; cin>>n>>m;
		char a[n+10][m+10];
		int flag ;
		for(int i=0;i<n;i++)
		{
			if(i%2==0) flag = 1;
			else flag = -1;
			for(int j=0;j<m;j++)
			{
				if(flag == 1)
					a[i][j]='B';
				else
					a[i][j]='W';
				flag = -flag;
			}
		}
		if(n*m%2==0){
			a[0][1]= 'B';
		}
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				cout<<a[i][j];
			}
			cout<<endl;
		}
	}
	return 0;
}

其实可以极端写法,直接把最右下角的那块变成W,其他的都是B就行。

#include<bits/stdc++.h>
using namespace std;
signed main()
{
	int T;
	cin >> T;
	while(T--){
		int n,m;
		cin>>n>>m;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
			    if(i==n&&j==m) cout<<"W";
				else cout<<"B";
			}
			cout<<endl;
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值