构造的思路比较暴力,如图。
但是代码其实不太好写
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int i,x,y,c[4];
for(i=0;i<4;i++)cin>>c[i],c[i]--;//预留一个给大的包围块
cout<<"32 50\n";
for(i=0;i<1600;i++){
x=i/400;//求包围块的颜色
y=(x+1)%4;//求包围块里面围的小格子的颜色
if(i%2==0&&i/50%2==0&&400*x<=i&&i<400*x+2*c[y]+50*(c[y]/25))x=y;
//前两个在判断这个位置是否应该是被包围的颜色,400*x是多余的,后面那个则在判断被包围的颜色用完没有
cout<<char('A'+x);
if(i%50==49)cout<<endl;
}
return 0;
}