1 条题解
-
0
自动搬运
来自洛谷,原作者为

ZUTTER_
**搬运于
2025-08-24 21:20:26,当前版本为作者最后更新于2017-10-29 11:12:30,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
重点重点啦(敲黑板):思路是先把图形存在数组中,然后从后往前,从下往上,从左往右依次覆盖。
###例
+---+ +---+ +---+ / /| / /| / /| +---+ | +---+ | +---+ | +---+ | | + | | +---+ | | +---+ / /| | |/| | |/ /| | |/ /| +---+ | +---+ | +---+---+ | +---+---+ | | | + | | + | | | + / /| | + | |/ | |/ | | |/ +---+ | |/ +---+ +---+ +---+---+ | | +---+ | |/ +---+重点是要找到每个立方体输出的位置,程序里有讲
至于输出每个立方体,
打个表就好了吖( ̄▽ ̄)/##程序
#include<iostream> #include<stdio.h> using namespace std; int i,m,n,j,k,l,o,p,a[1001][1001],ma[1001],maxx,maxy,z[6]={2,1,0,0,0,0},s[6]={6,6,6,6,5,4}; char c[1001][1001],c1[10][10]={ " +---+", " / /|", "+---+ |", "| | +", "| |/", "+---+", };//打表( ̄▽ ̄)/ void fg(int x,int y) { int i,j; for(i=5;i>=0;i--)//立方体需要倒过来存入数组 for(j=z[i];j<=s[i];j++)//分别是这一行的宽度 { c[5-i+x][j+y]=c1[i][j]; if(5-i+x>maxx) maxx=5-i+x; if(j+y>maxy) maxy=j+y;//分别记录最大长宽 } } int main() { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]); for(o=1;o<=n;o++)//层数 for(k=0;k<m;k++)//列循环 for(l=0;l<a[o][k];l++)//高度 fg((n-o)*2+1+3*l,(n-o)*2+1+4*k);//表示立方体左下角位置 for(i=maxx;i>=1;i--) { for(j=1;j<=maxy;j++) if(c[i][j]=='\000') printf("."); else printf("%c",c[i][j]); printf("\n"); } }居然做出了第四题,鸡冻到内牛满面(*/ω\*)
- 1
信息
- ID
- 60
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者