Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
Register

## 大家来救我啊！！！ Advanced ASCII Cubes 我和答案输出的样子一样，为什么老是错啊！！！ 请指教（内含代码）

Posted by elf788544 at 2006-09-21 10:49:23 on Problem 2330
```这是我的代码：
#include <stdio.h>
#include <memory.h>
#define MAXN 1000
char mp[MAXN][MAXN];
int h[55][55];
int mrow,mcol;
int row,col;
void out(void)
{
register int i,j;
for(i=1;i<=mrow;i++)
{
for(j=1;j<=mcol;j++)
putchar(mp[i][j]);
if(i!=mrow) putchar('\n');
}
}

void print1(int srow,int scol)
{
register int k;
if(mp[srow][scol]=='.') mp[srow][scol]='+';
for(k=scol+1;k<=scol+3;k++)
if(mp[srow][k]=='.') mp[srow][k]='-';
if(mp[srow][k]=='.') mp[srow][k]='+';
if(mp[srow-1][k+1]=='.') mp[srow-1][k+1]='/';
if(mp[srow-2][k+2]=='.') mp[srow-2][k+2]='+';
}
void print2(int srow,int scol)
{
register int k;
if(mp[srow-1][scol]=='.') mp[srow-1][scol]='|';
if(mp[srow-2][scol]=='.') mp[srow-2][scol]='|';
if(mp[srow-1][scol+4]=='.') mp[srow-1][scol+4]='|';
if(mp[srow-2][scol+4]=='.') mp[srow-2][scol+4]='|';
if(mp[srow-3][scol+6]=='.') mp[srow-3][scol+6]='|';
if(mp[srow-4][scol+6]=='.') mp[srow-4][scol+6]='|';

for(k=scol+1;k<=scol+3;k++)
{
if(mp[srow-1][k]=='.') mp[srow-1][k]=' ';
if(mp[srow-2][k]=='.') mp[srow-2][k]=' ';
}

if(mp[srow-2][scol+5]=='.') mp[srow-2][scol+5]=' ';
if(mp[srow-3][scol+5]=='.') mp[srow-3][scol+5]=' ';
}

int main()
{
register int i,j,k;
scanf("%d%d",&row,&col);
for(i=1;i<=row;i++)
for(j=1;j<=col;j++)
{
scanf("%d",&h[i][j]);
if(4*h[i][j]+1+2*(row-i)>mrow)
mrow=3*h[i][j]+3+2*(row-i);
}
mcol=4*col+1+2*row;
for(i=1;i<=mrow;i++)
for(j=1;j<=mcol;j++)
mp[i][j]='.';
for(i=row;i>=1;i--)
for(j=col;j>=1;j--)
{
int srow=mrow-2*(row-i);
int scol=2*(row-i)+4*(j-1)+1;
for(k=0;k<=h[i][j];k++)
{
print1(srow-3*k,scol);
if(k==h[i][j]) break;
print2(srow-3*k,scol);
}
int ttrow=srow-(3*h[i][j]+3)+1;
int ttcol=scol+2;

if(mp[ttrow+1][ttcol-1]=='.') mp[ttrow+1][ttcol-1]='/';
if(mp[ttrow+1][ttcol+3]=='.') mp[ttrow+1][ttcol+3]='/';

if(mp[ttrow][ttcol]=='.') mp[ttrow][ttcol]='+';
for(k=ttcol+1;k<=ttcol+3;k++)
if(mp[ttrow][k]=='.') mp[ttrow][k]='-';
if(mp[ttrow][k]=='.') mp[ttrow][k]='+';

for(k=ttcol;k<=ttcol+2;k++)
if(mp[ttrow+1][k]=='.') mp[ttrow+1][k]=' ';
}
out();
return 0;
}

```

Followed by: