讨论 / 太高兴了,AC了 C++题解
makedream 2010-11-10 05:18:00
点我顶贴 收藏 删除
#include <iostream>

using namespace std;

char zfx[501][501]={'.'};

int m,n;

int g[101][101];

void make_zfx(int x,int y)

{

zfx[x][y]=zfx[x][y+4]=zfx[x-3][y]=zfx[x-3][y+4]=zfx[x-5][y+2]=zfx[x-5][y+6]='+';

zfx[x-1][y]=zfx[x-2][y]=zfx[x-1][y+4]=zfx[x-2][y+4]='|';

zfx[x][y+1]=zfx[x][y+2]=zfx[x][y+3]='-';

zfx[x-3][y+1]=zfx[x-3][y+2]=zfx[x-3][y+3]='-';

zfx[x-5][y+3]=zfx[x-5][y+4]=zfx[x-5][y+5]='-';

zfx[x-4][y+1]=zfx[x-4][y+5]='/';

zfx[x-1][y+5]='/';

zfx[x-2][y+6]='+';

zfx[x-3][y+6]=zfx[x-4][y+6]='|';

zfx[x-2][y+5]=zfx[x-3][y+5]=' ';

zfx[x-1][y+1]=zfx[x-1][y+2]=zfx[x-1][y+3]=zfx[x-2][y+1]=zfx[x-2][y+2]=zfx[x-2][y+3]=' ';

zfx[x-4][y+2]=zfx[x-4][y+3]=zfx[x-4][y+4]=' ';

}

void fun(int a,int x,int y)

{

int p=a,i=x,j=y;

while (p-->0)

{

make_zfx(i,j);

i=i-3;

}

}

void work()

{

int a=50,b=50;

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

{

int x=a,y=b;

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

{

fun(g[i][j],x,y);

y+=4;

}

a+=2;

b-=2;

}

}

int main()

{

cin>>m>>n;

for (int i=0;i<501;i++)

for (int j=0;j<501;j++)

zfx[i][j]='.';

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

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

cin>>g[i][j];

work();

int sx=-1,sy=-1,fx=-1,fy=-1;

for (int i=0;i<501;i++)

{

for (int j=0;j<501;j++)

if (zfx[i][j]!='.') {sx=i;break;}

if (sx==i) break;

}

for (int i=500;i>=0;i--)

{

for (int j=0;j<501;j++)

if (zfx[i][j]!='.') {fx=i;break;}

if (fx==i) break;

}

for (int i=0;i<501;i++)

{

for (int j=0;j<501;j++)

if (zfx[j][i]!='.') {sy=i;break;}

if (sy==i) break;

}

for (int i=500;i>=0;i--)

{

for (int j=0;j<501;j++)

if (zfx[j][i]!='.') {fy=i;break;}

if (fy==i) break;

}

for (int i=sx;i<=fx;i++)

{

for (int j=sy;j<=fy;j++)

printf("%c",zfx[i][j]);

printf("\n");

}

return 0;

}

查看更多回复
提交回复