题意略。
思路:如图
详见代码:
#include<bits/stdc++.h> #define maxn 55 using namespace std; char board[maxn][maxn]; void init(){ for(int i = 1;i <= 25;++i){ for(int j = 1;j <= 25;++j){ board[i][j] = 'A'; } } for(int i = 26;i <= 50;++i){ for(int j = 1;j <= 25;++j){ board[i][j] = 'B'; } } for(int i = 1;i <= 25;++i){ for(int j = 26;j <= 50;++j){ board[i][j] = 'C'; } } for(int i = 26;i <= 50;++i){ for(int j = 26;j <= 50;++j){ board[i][j] = 'D'; } } } int main(){ init(); int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); --a,--b,--c,--d; for(int i = 27;i <= 50;i += 2){ if(a == 0) break; for(int j = 1;j <= 25;j += 2){ if(a == 0) break; board[i][j] = 'A'; --a; } } for(int i = 1;i <= 25;i += 2){ if(b == 0) break; for(int j = 26;j <= 50;j += 2){ if(b == 0) break; board[i][j] = 'B'; --b; } } for(int i = 27;i <= 50;i += 2){ if(c == 0) break; for(int j = 26;j <= 50;j += 2){ if(c == 0) break; board[i][j] = 'C'; --c; } } for(int i = 1;i <= 25;i += 2){ if(d == 0) break; for(int j = 1;j <= 25;j += 2){ if(d == 0) break; board[i][j] = 'D'; --d; } } printf("50 50\n"); for(int i = 1;i <= 50;++i){ for(int j = 1;j <= 50;++j){ printf("%c",board[i][j]); } printf("\n"); } return 0; }