这是本文档旧的修订版!
签到题
给定n*m大小的棋盘,按五子棋规则构造两人和棋情况
结论很显然
如果行数为偶数,对每一行构造一个连续四个断一个即可,下一行和上一行的情况完全相反
如果行数为奇数,考虑前n-1行采取偶数行情况的构造,最后一行两个棋子交替即可
本来第一直觉以为是考察五子棋的日字八卦阵,结果发现我属实想多了
AC代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
if(n%2){
int flag = 1;
for(int i=0;i<n;++i){
int count = 1;
for(int j=0;j<m;++j){
if(flag>0){
if(count<=4){
printf("x");
count++;
}
else{
count = 1;
printf("o");
}
}
else{
if(count<=4){
printf("o");
count++;
}
else{
count = 1;
printf("x");
}
}
}
flag = -flag;
printf("\n");
}
for(int j=0;j<m;++j){
if(j%2==0) printf("x");
else printf("o");
}
printf("\n");
}
else{
int flag = 1;
for(int i=0;i<n;++i){
int count = 1;
for(int j=0;j<m;++j){
if(flag>0){
if(count<=4){
printf("x");
count++;
}
else{
count = 1;
printf("o");
}
}
else{
if(count<=4){
printf("o");
count++;
}
else{
count = 1;
printf("x");
}
}
}
flag = -flag;
printf("\n");
}
}
}
}