对于正在做这道题的同学,我遗憾地告诉你们,这道题就是坑倒dalao,防止AK(虽然08年好像还是有人AK了,orz)的纯模拟题,没有任何算法或者技巧。但是请不要绝望,我写出来也就是那么一个通宵的时间,下面附上源码,给予你们些许慰藉
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char c[2001][2001];
int gz[55][55];
const char mb[][9]={""," +---+.."," | |/."," | | +"," +---+ |"," ./ /|"," ..+---+"};
int zuim=0,zuin=0;
void tc(int m,int n)
{
for(int i=0;i<6;i++){
for(int j=0;j<7;j++){
if(mb[i+1][j+1]!='.')
{
c[i+m][j+n]=mb[i+1][j+1];
if(i+m>zuim){
zuim=i+m;
}
if(j+n>zuin){
zuin=j+n;
}
}
}
}
}
int main()
{
int m,n,zuigao=1;
memset(gz,0,sizeof(gz));
scanf("%d%d",&m,&n);
for(int i=m;i>0;i--){
for(int j=1;j<=n;j++)
{
scanf("%d",&gz[i][j]);
if(gz[i][j]>zuigao){
zuigao=gz[i][j];
}
}
}
for(int i=0;i<2001;i++){
for(int j=0;j<2001;j++){
c[i][j]='.';
}
}
for(int i=m;i>0;i--){
for(int k=1;k<=n;k++){
for(int j=1;j<=gz[i][k];j++){
tc((j-1)*3+1+((i-1)*2),(k-1)*4+1+((i-1)*2));
}
}
}
for(int i=zuim;i>0;i--)
{
for(int j=1;j<=zuin;j++){
printf("%c",c[i][j]);
}
printf("\n");
}
return 0;
}