Visual Cube

  • 将这个立方体分块,分成上中下三个部分,利用长宽高计算行列,最后输出即可。
    每个部分都分成奇偶行来输出,总共有\(2*(b+c)+1\)行,共\(2*(a+b)+1\)列。设当前行为\(i\),划分方式:当行数小于等于\(2*b\)时,在上部,当$i > (2 * b) $ && \(i<=2*c+1\)时,在中部,其余在下部。这样的划分可以应对绝大部分情况,但是对于上部有一中情况是不包括的,当$b>c $时,如果继续之前的划分,那么在头部判定之后,它依然符合下部的判定,所以这时也被当作下部输出,这不是预期的结果,所以在上部加上额外的判定。

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
int main(void) {int t, a, b, c;cin >> t;while (t-- > 0) {cin >> a >> b >> c;for (int i = 1; i <= (2 * (b + c) + 1); i++) {//if (i != 1)cout << endl;//headif (i % 2 == 1 && i <= (2 * b)) {for (int j = 1; j <= 2*(b-i/2); j++) {cout << ".";}for (int j = 2 * (b - i / 2) + 1; j <= 2 * (b - i / 2) + a * 2; j+=2) {cout << "+-";}cout << "+";if (b < c || i <= (2 * c + 1)) {for (int j = 2 * (b - i / 2) + a * 2 + 2; j <= 2 * (a + b) + 1; j += 2) {cout << ".+";}}else{cout << ".";for (int j = 1; j <= c; j++) {cout << "+.";}for (int j = 2 * (b - i / 2) + a * 2 + 2*c+3; j <= 2 * (a + b) + 1; j++) {cout << ".";}}cout << endl;continue;}if (i % 2 == 0 && i <= (2 * b)) {for (int j = 1; j <= 2 * (b - i / 2)+1; j++) {cout << ".";}for (int j = 2 * (b - i / 2) + 1; j <= 2 * (b - i / 2) + a * 2; j += 2) {cout << "/.";}if (b < c ||i<=(2*c+1)) {for (int j = 2 * (b - i / 2) + a * 2 + 2; j <= 2 * (a + b) + 1; j += 2) {cout << "/|";}}else{cout << "/";for(int j=1;j<=c;j++){cout << "|/";}for (int j = 2 * (b - i / 2) + a * 2+2*c+3; j <= 2 * (a + b) + 1; j++) {cout << ".";}}cout << endl;continue;}//middleif (i % 2 == 1 && i > (2 * b)&& i<=2*c+1) {for (int j = 1; j <= 2 * a; j+=2) {cout << "+-";}cout << "+";for (int j = 2 * (a+1); j <= 2 * (a + b) + 1; j += 2) {cout << ".+";}cout << endl;continue;}if (i % 2 == 0 && i > (2 * b) && i <= 2 * c + 1) {for (int j = 1; j <= 2 * a; j+=2) {cout << "|.";}cout << "|";for (int j = 2 * (a + 1); j <= 2 * (a + b) + 1; j += 2) {cout << "/|";}cout << endl;continue;}//bottomif (i % 2 == 1 && i > (2 * c + 1)) {for (int j = 1; j <= 2 * a; j+=2) {cout << "+-";}cout << "+";int k = (2 * (c + b) + 1 - i) / 2+1;for (int j = 1; j <= k-1; j++) {cout << ".+";}for (int j = 2 * a + 1 + 2 * k; j <= 2 * (a + b) + 2; j++) {cout << ".";}cout << endl;continue;}if (i % 2 == 0 && i > (2 * c + 1)) {for (int j = 1; j <= 2 * a; j+=2) {cout << "|.";}int k = (2 * (c + b) + 1 - i) / 2+1;for (int j = 1; j <= k; j++) {cout << "|/";}for (int j = 2 * a + 1 + 2 * k; j <= 2 * (a + b) + 1; j++) {cout << ".";}cout << endl;continue;}}}return 0;
}

转载于:https://www.cnblogs.com/FlyerBird/p/9403338.html

HDU 6330--Visual Cube(构造,计算)相关推荐

  1. Kylin系列(二)—— Cube 构造算法

    总目录 Kylin系列(一)-- 入门 Kylin系列(二)-- Cube 构造算法 总目录 Kylin cube 构造算法 逐层算法(layer Cubing) 算法的优点 算法的缺点 快速Cube ...

  2. 【HDU - 1220】Cube (组合数学,简单)

    题干: Cowl is good at solving math problems. One day a friend asked him such a question: You are given ...

  3. HDU 5573 Binary Tree 构造

    Binary Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 Description The Old Frog King lives ...

  4. 多校 HDU 6313 Hack It——构造

    题意:构造一个矩阵,使得不存在这样一个子矩阵,子矩阵的四个角都为1 思路: 首先用常用的数论构造方法,假设n=5^2,那么矩阵可以写作这种形式: xxxxx xxxxx xxxxx xxxxx xxx ...

  5. 2015多校第一场 1005 hdu 5292 Pocket Cube 转魔方

    题目链接:点击打开链接 题意:给出一个二阶魔方的状态,判断这个魔方是否能够还原. 思路:首先没玩过魔方,所以没做出来,看了好几个大神的博客才懂,主要看了这位博主的文章点击打开链接,也是问了博主才明白, ...

  6. 随机计算(3)——Stochastic Circuit Synthesis by Cube Assignment

    1.Abstract SC(Stochastic Computing)对于比特翻转表现出强大的容错能力(The tolerance to bit-flip errors).更重要的是,它相比于传统的二 ...

  7. core部署iis的 调试net_远程调试远程 IIS 计算机上的 ASP.NET Core - Visual Studio | Microsoft Docs...

    在 Visual Studio 中远程调试远程 IIS 计算机上的 ASP.NET CoreRemote Debug ASP.NET Core on a Remote IIS Computer in ...

  8. kylin KV+cube方案分析

    2019独角兽企业重金招聘Python工程师标准>>> 前言   在使用Kylin的时候,最重要的一步就是创建cube的模型定义,即指定度量和维度以及一些附加信息,然后对cube进行 ...

  9. SPH(光滑粒子流体动力学)流体模拟实现三:Marching Cube算法(1)

    流体模拟(三) Marching Cube算法(1) 我们在 实现流体表面重建时,需要事先在空间中划分网格,我们的流体系统正好已经完成了此项工作.其次利用Marching Cube算法计算出构成表面的 ...

  10. Apache Kylin Cube 的构建过程

    不多说,直接上干货! 1. Cube的物理模型 Cube物理模型 如上图所示,一个常用的3维立方体,包含:时间.地点.产品.假如data cell 中存放的是产量,则我们可以根据时间.地点.产品来确定 ...

最新文章

  1. log4j2配置实例[按小时记录日志文件]
  2. 2019 CCPC wannfly winter camp Day 5
  3. 2021-10-11 寻找二叉树结点的前驱或后继结点(用到parent指针)
  4. Central Authentication Service
  5. C++函数的传入参数是指针的指针(**)的详解
  6. stack overflow at line
  7. 代码流程图生成器_【进阶Python】第五讲:迭代器与生成器
  8. 【C++笔记】字符串、向量和数组
  9. Linux常用命令汇总--cat
  10. 【转载】程序员面对下列技术问题,如何做决策
  11. gorm软删除_删除 |《GORM 中文文档 v1》| Go 技术论坛
  12. python读取xml文件并修改_如何在Python中解析和修改XML?
  13. MacOS 软件 Adobe Photoshop 2022 安装使用详细教程
  14. 图片太大怎么压缩变小?
  15. Windows 10 使用小鹤双拼
  16. 华米手表安装第三方应用
  17. 那些让人动容的美食文案
  18. ROS:一种路径优化方法-拉直法
  19. 将Windows XP 中文版变为英文版
  20. 返回值取vector容器的前n个元素

热门文章

  1. Maven搭建SpringMVC项目详解
  2. Java对象序列化原理以及Serializable接口
  3. Mybatis 入门案例分享
  4. QT记事本的读写函数
  5. Shiro(三)——Shiro授权入门案例
  6. c#机器人聊天软件_3.C#面向对象基础聊天机器人
  7. 深度学习:卷积神经网络之移动网络(MobileNet)
  8. Python基本图形绘制:turtle库
  9. js中的同步与异步的理解
  10. nodejs后台系列--第四篇--koa(二)