HDU - 2018 Multi-University Training Contest 3 - 1012: Visual Cube

简介: HDU - 2018 Multi-University Training Contest 3 - 1012: Visual Cube

Problem L. Visual Cube

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)

Total Submission(s): 1473    Accepted Submission(s): 694


Problem Description


Little Q likes solving math problems very much. Unluckily, however, he does not have good spatial ability. Everytime he meets a 3D geometry problem, he will struggle to draw a picture.

Now he meets a 3D geometry problem again. This time, he doesn't want to struggle any more. As a result, he turns to you for help.

Given a cube with length a, width b and height c, please write a program to display the cube.


Input


The first line of the input contains an integer T(1≤T≤50), denoting the number of test cases.

In each test case, there are 3 integers a,b,c(1≤a,b,c≤20), denoting the size of the cube.



Output


For each test case, print several lines to display the cube. See the sample output for details.


Sample Input

2

1 1 1

6 2 4



Sample Output


image.png


解题思路:立体图分为:俯视图 + 正视图 + 右视图,此题先刷 俯视图 + 正视图,最后刷 右视图;一开始先记录每个视图有哪些规律图案,比如:“+-+-+-+”、“/././././”,然后再创建一个全是“点”的二维数组,把它描上去即可。

AC 代码

#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int main()
{
    int T; scanf("%d",&T);
    int a,b,c;
    while(T-- && ~scanf("%d%d%d",&a,&b,&c))
    {
        string zf,xd,sd,dx,sz;
        for(int i=0;i<a;i++)
        {
            zf.append("+-");
            xd.append("/.");
            sd.append("|.");
        }
        zf.append("+"); xd.append("/"); sd.append("|");
        for(int i=0;i<c;i++)
        {
            sz.append("|+");
            dx.append("./");
        }
//        cout<<"+-:"<<zf<<endl;
//        cout<<"/.:"<<xd<<endl;
//        cout<<"|.:"<<sd<<endl;
//        cout<<"./:"<<dx<<endl;
//        cout<<"|+:"<<sz<<endl;
        int rlen=2*c+1+2*b,clen=2*a+1+2*b;
        int con=2*b;
        char g[rlen+5][clen+5]; mem(g,'.');
        for(int i=0;i<rlen;i++,con--)
        {
            for(int j=0;j<clen;j++)
            {
                if(con>0)
                {
                    if(j+con<clen && i%2==0 && j<zf.length())
                        g[i][j+con]=zf[j];
                    else if(j+con<clen && i%2==1 && j<xd.length())
                        g[i][j+con]=xd[j];
                }
                else
                {
                    if(i%2==0 && j<zf.length())
                        g[i][j]=zf[j];
                    else if(i%2==1 && j<sd.length())
                        g[i][j]=sd[j];
                }
            }
        }
        // 正视图和俯视图刷完,可以快速排错
//        for(int i=0;i<rlen;i++)
//        {
//            for(int j=0;j<clen;j++)
//            {
//                printf("%c",g[i][j]);
//            }
//            puts("");
//        }
//        puts("-----------------");
        // 右视图刷完
        con=2*b;
        int h=2*c,t=0;
        for(int j=clen-1;j>=0 && con--;j--,t++)
        {
            for(int i=1+t;i<=h+t;i++)
            {
                if(j%2==0 && i-1-t<sz.length())
                    g[i][j]=sz[i-1-t];
                else if(j%2==1 && i-1-t<dx.length())
                    g[i][j]=dx[i-1-t];
            }
        }
        for(int i=0;i<rlen;i++)
        {
            for(int j=0;j<clen;j++)
            {
                printf("%c",g[i][j]);
            }
            puts("");
        }
    }
    return 0;
}
目录
相关文章
|
算法 测试技术 开发工具
m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件
m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件
596 0
|
3月前
|
SQL 人工智能 自然语言处理
业务人员也能用的 AI 数据分析工具?Aloudata Agent “开箱即用”体验报告
不仅提升了个人工作效率,更推动了企业数据民主化进程,让数据真正成为驱动业务增长的核心引擎
|
3月前
|
人工智能 缓存 算法
为什么你学了那么多算法,代码性能还是“一塌糊涂”?
本文针对开发者普遍存在的“学了算法却写不出高性能代码”的痛点,提供了一套系统化的“算法优化AI指令”。该指令旨在引导开发者建立“分析-设计-验证”的工程化思维,通过结构化的提问框架,让AI成为辅助性能优化的“私人教练”,从而将零散的算法知识转化为体系化的实战能力。
238 7
|
3月前
|
人工智能 自然语言处理 搜索推荐
企业 AI 客服系统怎么建?免费工具推荐、成本测算与选型攻略
2025年,AI客服系统成为企业提升服务效率与客户体验的核心工具。面对用户对7×24小时响应、个性化交互的高要求,传统客服难以应对。AI客服通过自然语言处理与自动化技术,实现高效应答、降本增效,并释放人力处理复杂问题。超60%企业已在客户触点部署AI能力,智能客服正从“可选”变为“必备”。
|
机器学习/深度学习 Java 开发工具
【移花接木】OpenCV4.8 For Java 深度学习 实时人脸检测
【移花接木】OpenCV4.8 For Java 深度学习 实时人脸检测
351 0
|
安全 Windows
记一次“上传”命令执行的绕过案例
记一次“上传”命令执行的绕过案例
324 0
|
Java
Java控制电脑给对方微信发消息
本来打算搞个舔狗日记和暖心话术得....
244 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 如何通过身份证号码进行年龄段的统计?
【8月更文挑战第20天】PostgreSQL 如何通过身份证号码进行年龄段的统计?
1288 2
|
运维 监控 安全
在Linux中,日志文件作用是什么及如何查看?
在Linux中,日志文件作用是什么及如何查看?
|
SQL 消息中间件 存储
顺丰基于 Flink CDC + Hudi 推进实时业务落地
数据研发高级工程师唐尚文,在 Flink Forward Asia 2022 数据集成专场的分享。
1060 1
顺丰基于 Flink CDC + Hudi 推进实时业务落地

热门文章

最新文章