构造一个网格图使得四种类型的联通分量分别有a,b,c,d
看图就知道应该如何去构造了
int gird[maxn][maxn]; int main(){ int a[4]; for(int i=0;i<4;i++) cin>>a[i],--a[i]; int n = 40, m= 50; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ gird[i][j]=(i-1)/10; } } for(int i=0;i<4;i++){ int nx=(i+1)%4; if(!a[nx]) continue; int u=i*10+2; int d=(i+1)*10-1; for(int j=u;j<=d && a[nx];j+=2){ for(int k=1;k<=m && a[nx];k+=2){ gird[j][k]=nx; a[nx]--; } } } cout<<n<<' '<<m<<endl; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) cout<<char('A'+gird[i][j]); cout<<endl; } }