其实我不是很喜欢这类题目
构造方法十分奇妙
A图涂满最左一列,以及除了最右一列以外所有的奇/偶数行格子,B图反之
然后让输入图和AB两图分别取并即可
还是看图吧:
代码如下:
#include <bits/stdc++.h>
using namespace std;
char a[510][510],b[510][510],c[510][510];
int h,w;
int main()
{
cin>>h>>w;
for(int i=0;i<h;i++)
{
scanf("%s",c[i]);
}
for(int i=0;i<h;i++)
{
a[i][0]=b[i][w-1]='#';
if(i%2)
{
for(int j=1;j<w-1;j++)
{
a[i][j]='#';
}
}
else
{
for(int j=1;j<w-1;j++)
{
b[i][j]='#';
}
}
}
for(int i=0;i<h;i++)
{
for(int j=0;j<w;j++)
{
a[i][j]=((a[i][j]=='#'||c[i][j]=='#')?'#':'.');
b[i][j]=((b[i][j]=='#'||c[i][j]=='#')?'#':'.');
}
}
for(int i=0;i<h;i++)
{
printf("%s\n",a[i]);
}
printf("\n");
for(int i=0;i<h;i++)
{
printf("%s\n",b[i]);
}
return 0;
}