本文主要是介绍cf Round #632 (Div. 2) A. Little Artem,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
**题意:在给定的n * m个格子种填入白色或者黑色,使得白色的个数等于黑色的个数加1(当黑色与白色相邻的时候才算数,若黑色附近全是黑色,则不算数)
思路:黑白黑白交叉,如下图,当n * m为奇数时,B显然会比W多一个 ,满足条件,因此我们只需要考虑,n * m为偶数时,由下图可知,可以直接将最后一个元素改成B(如2,3若本来是B也不影响),当然如果n,m都是偶数的时候,需要把第n行第m-1个元素改成B
下面展示代码:
#include <iostream>
using namespace std;
int main()
{int T;char c[1000][1000];scanf("%d", &T);while(T--){int n, m;scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){if((i+j) % 2== 1)c[i][j] = 'W';elsec[i][j] = 'B';}}c[n][m] = 'B';if(n % 2 == 0 && m % 2 == 0)c[n][m-1] = 'B';for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++)printf("%c", c[i][j]);printf("\n");}}return 0;
}
这篇关于cf Round #632 (Div. 2) A. Little Artem的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!