1149 立体图
题解:(其实我也没太读懂这所谓"普及组"的题目,那就先这样模拟吧)
这道题实际上是利用了立体几何的透视原理
我们可以从后面往前画
这是一种非常奇怪的方法
但是却非常有效
我们可以先写一个函数
画一个立方体
void deal(int x,int y){ for(int i=y+1;i<y+4;i++) p[x][i]=p[x-3][i]=p[x-5][i+2]='-'; for(int i=x-1;i>x-3;i--) p[i][y]=p[i][y+4]=p[i-2][y+6]='|'; for(int i=x-1;i>x-3;i--) for(int j=y+1;j<y+4;j++) p[i][j]=' '; for(int i=x-2;i>x-4;i--) p[i][y+5]=' '; for(int i=y+2;i<y+5;i++) p[x-4][i]=' '; p[x][y]=p[x-3][y]=p[x][y+4]=p[x-3][y+4]='+'; p[x-4][y+1]=p[x-4][y+5]=p[x-1][y+5]='/'; p[x-5][y+2]=p[x-5][y+6]=p[x-2][y+6]='+'; }
其实这一步是十分好想的
自己画图就能想出来
接下来是计算长度和宽度
经过我个人运算
w=4*n+2*m+1; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) h=max(h,H[i][j]*3+3+2*(m-i));
AC代码:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; #define N 51 int n,m,w,h,H[N][N]; char p[N*20][N*20]; inline void deal(int x,int y){ for(int i=y+1;i<y+4;i++) p[x][i]=p[x-3][i]=p[x-5][i+2]='-'; for(int i=x-1;i>x-3;i--) p[i][y]=p[i][y+4]=p[i-2][y+6]='|'; for(int i=x-1;i>x-3;i--) for(int j=y+1;j<y+4;j++) p[i][j]=' '; for(int i=x-2;i>x-4;i--) p[i][y+5]=' '; for(int i=y+2;i<y+5;i++) p[x-4][i]=' '; p[x][y]=p[x-3][y]=p[x][y+4]=p[x-3][y+4]='+'; p[x-4][y+1]=p[x-4][y+5]=p[x-1][y+5]='/'; p[x-5][y+2]=p[x-5][y+6]=p[x-2][y+6]='+'; } int main(){ cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>H[i][j]; w=4*n+2*m+1; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) h=max(h,H[i][j]*3+3+2*(m-i)); for(int i=1;i<=h;i++) for(int j=1;j<=w;j++) p[i][j]='.'; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) for(int k=1;k<=H[i][j];k++) deal(h-2*(m-i)-3*(k-1),4*(j-1)+1+(m-i)*2); for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++) cout<<p[i][j]; cout<<endl; } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp