讨论 / C++暴力出奇迹
lijie201602 2017-09-27 22:52:48
点我顶贴 收藏 删除
#include<cstdio>

#include<cstring>

int a[310][310],n,m,k=0,l=0;

char p[10010][10010];

int max(int a,int b) { return a>b?a:b; }

int main()

{

memset(a,0,sizeof(a));

scanf("%d %d",&m,&n);

for(int i=1;i<=m;i++)

for(int j=1;j<=n;j++) scanf("%d",&a[m+1-i][j]);

for(int i=1;i<=m;i++)

for(int j=1;j<=n;j++) { l=max(l,2*i+4*j+1); k=max(k,2*i+3*a[i][j]+1); }

for(int i=1;i<=k;i++)

for(int j=1;j<=l;j++) p[i][j]='.';

for(int i=m;i>=1;i--)

for(int j=1;j<=n;j++)

for(int k1=1;k1<=a[i][j];k1++)

{

int x=2*i+3*k1-4,y=2*i+4*j-5;

//---------------------------------------------------------------------------------

p[ x ][ y ]='+';

p[ x ][y+4]='+';

p[x+2][y+6]='+';

p[x+3][ y ]='+';

p[x+3][y+4]='+';

p[x+5][y+2]='+';

p[x+5][y+6]='+';

//---------------------------------------------------------------------------------

p[ x ][y+1]='-';

p[ x ][y+2]='-';

p[ x ][y+3]='-';

p[x+3][y+1]='-';

p[x+3][y+2]='-';

p[x+3][y+3]='-';

p[x+5][y+3]='-';

p[x+5][y+4]='-';

p[x+5][y+5]='-';

//---------------------------------------------------------------------------------

p[x+1][ y ]='|';

p[x+1][y+4]='|';

p[x+2][ y ]='|';

p[x+2][y+4]='|';

p[x+3][y+6]='|';

p[x+4][y+6]='|';

//---------------------------------------------------------------------------------

p[x+1][y+1]=' ';

p[x+1][y+2]=' ';

p[x+1][y+3]=' ';

p[x+2][y+1]=' ';

p[x+2][y+2]=' ';

p[x+2][y+3]=' ';

p[x+2][y+5]=' ';

p[x+3][y+5]=' ';

p[x+4][y+2]=' ';

p[x+4][y+3]=' ';

p[x+4][y+4]=' ';

//----------------------------------------------------------------------------------

p[x+1][y+5]='/';

p[x+4][y+1]='/';

p[x+4][y+5]='/';

}

for(int i=k;i>=1;i--)

{

for(int j=1;j<=l;j++) printf("%c",p[i][j]);

printf("\n");

}

return 0;

}

查看更多回复
提交回复