专栏文章

立体图

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mios4zkm
此快照首次捕获于
2025/12/03 00:15
3 个月前
此快照最后确认于
2025/12/03 00:15
3 个月前
查看原文
CPP
#include<bits/stdc++.h>
using namespace std;
int m,n,a[505][505],b[52][52],maxx,maxy;
void draw(int x,int y){
	a[x][y]=1;
	a[x-1][y-1]=4;
	a[x-2][y-2]=1;
	a[x-2][y-1]=3;
	a[x-2][y]=3;
	a[x-2][y+1]=1;
	a[x][y+1]=3;
	a[x][y+2]=3;
	a[x][y+3]=1;
	a[x-1][y+2]=4;
	a[x-3][y-2]=2;
	a[x-4][y-2]=2;
	a[x-5][y-2]=2;
	a[x-6][y-2]=1;
	a[x-3][y+1]=2;
	a[x-4][y+1]=2;
	a[x-5][y+1]=2;
	a[x-6][y+1]=1;
	a[x-6][y-1]=3;
	a[x-6][y]=3;
	a[x-5][y+2]=4;
	a[x-1][y+3]=2;
	a[x-2][y+3]=2;
	a[x-3][y+3]=2;
	a[x-4][y+3]=1;
	a[x-1][y+1]=-1;
	a[x-1][y]=-1;
	a[x-3][y]=-1;
	a[x-4][y]=-1;
	a[x-5][y]=-1;
	a[x-3][y-1]=-1;
	a[x-4][y-1]=-1;
	a[x-5][y-1]=-1;
	a[x-2][y+2]=-1;
	a[x-3][y+2]=-1;
	a[x-4][y+2]=-1;
}
void paint(int p){
	if(p==-1) cout<<" ";
	if(p==0) cout<<".";
	if(p==1) cout<<"+";
	if(p==2) cout<<"-";
	if(p==3) cout<<"|";
	if(p==4) cout<<"/";
}
int main(){
	int i,j,maxn=0,add=0;
	cin>>m>>n;
	maxx=n*4+1+2*m;
	maxy=m*2+1;
	for(i=m;i>=1;i--){
		for(j=n;j>=1;j--){
			cin>>b[i][j];
		    maxn=max(b[i][j]*3+i*2+1,maxn);
		}
	}
	for(i=m;i>1;i--){
		for(j=1;j<n;j++){
		    if(b[i][j]<b[i-1][j]&&b[i][j]<b[i][j+1]) b[i][j]=0;
		}
	}
	while(m>add){
		add++;
		for(i=n;i>=1;i--){
			for(j=1;j<=b[m-add+1][i];j++){
				draw(maxx-i*4+4,maxy+j*3-3);
			}
		}
		maxx-=2;
		maxy-=2;
	}
	for(i=maxn;i>=1;i--){
		for(j=1;j<=n*4+1+2*m;j++) paint(a[j][i]);
		cout<<endl;
	}
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...