方法:暴力,判断,输出

本题为了更好理解建议各位可以复制样例来研究,甚至可以复制题解来测试思想,相信大家不会抄。

有什么不好的请大佬们在评论里指出,谢谢


#include <bits/stdc++.h>//头文件,万能,手动滑稽
using namespace std;//开辟名称空间
int k,x,js;//x表示总行数,k表示要摆出数字的大小,js表示
string a;//第二排数字
int main()//开始
{
/*
cout<<"123456--123-- -- -- --123-- -- -- "<<endl;
cout<<"123|1234|1234|1|12|1|1234|12 1234| | | | | |12|"<<endl;
cout<<" | | | | | | | | | | | | | |"<<endl;
cout<<" -- -- -- -- -- -- 1-- "<<endl;
cout<<" | | | | | | | | | | | | |"<<endl;
cout<<" | | | | | | | | | | | | |"<<endl;
cout<<" -- -- -- -- -- -- -- "<<endl;
//这里是复制样例来看空格,为了一目了然这一切。
//发现相邻两个数字之间有两个空格,数字中间的空格是k。
//要画"-"那一行要空一个格。
//第一个数字要顶格
//注意第一个数字是1时不要中陷阱,就是认为刚开始要空3格
*/
cin>>k;//输入数字大小
cin>>a;//输入要输出的数字
x=3+k*2;//发现的规律,计算总共多少行
for(int i=1;i<=x;i++)//进入第一层循环一共要画3+k*2行
{
if(i==1 || i==2+k*1 || i==3+k*2)cout<<" ";//规律的应用,画"-"那一行要空一个格。
for(int j=0;j<a.size();j++)//进入第二层循环,用处:画每行要画的东西。
{
if(j!=0)cout<<" ";//如果不是第一个格就空一个,具体在上面的图中找的
if(i==1)//如果是第一行
{
if(a[j]=='2' ||a[j]=='3' || a[j]=='5' || a[j]=='6' || a[j]=='7' || a[j]=='8'||a[j]=='9'||a[j]=='0')//判断要画"-"的数字
{
for(int kkksc03=1;kkksc03<=k;kkksc03++)cout<<'-';//画出"-"
cout<<" ";//相邻两个数字之间有两个空格
}
else //如果不是那些数字就不画'-'
{
for(int kkksc03=1;kkksc03<=k;kkksc03++)cout<<' ';//用空格代替"-"
cout<<" ";//相邻两个数字之间有两个空格
}
} if(i!=1 && i<2+k*1)//如果在第一行和中间行之间画'|'的地方也就是数字的上半部分
{
if(a[j]=='1' || a[j]=='2' || a[j]=='3' || a[j]=='7')//判断在右边画'|'的数字
{
cout<<" ";//替代左边的'|'
for(int psb=1;psb<=k;psb++)cout<<" ";//数字中间的空格
cout<<'|';//画'|'
}
if(a[j]=='5' || a[j]=='6')//判断在左边画'|'的数字
{
cout<<'|';//画'|'
for(int psb=1;psb<=k;psb++)cout<<" "; //数字中间的空格
cout<<" ";//替代右边的'|'
}
if(a[j]=='4' || a[j]=='8' ||a[j]=='9'||a[j]=='0')//判断两边都要画'|'的数字
{
cout<<'|';//画'|'
for(int psb=1;psb<=k;psb++)cout<<" "; //数字中间的空格
cout<<'|';//画'|'
}
} if(i==2+k*1)//判断是否在中间那行
{
if(a[j]=='2' ||a[j]=='3' || a[j]=='5' || a[j]=='6' || a[j]=='4' || a[j]=='8'||a[j]=='9')//判断要画"-"的数字
{
for(int kkksc03=1;kkksc03<=k;kkksc03++)cout<<'-';//画出"-"
cout<<" ";//相邻两个数字之间有两个空格
}
else //如果不是那些数字就不画'-'
{
for(int kkksc03=1;kkksc03<=k;kkksc03++)cout<<' ';//用空格代替"-"
cout<<" ";//相邻两个数字之间有两个空格
}
} if(i>2+k*1 && i!=3+k*2)//判断是否在数字的下半部分要画'|'的那k行
{
if(a[j]=='1' || a[j]=='3' || a[j]=='4' || a[j]=='5' || a[j]=='7' ||a[j]=='9')//判断右边要画'|'的数字
{
cout<<" ";//替代左边的'|'
for(int psb=1;psb<=k;psb++)cout<<" ";//数字中间的空格
cout<<'|';//画'|'
}
if(a[j]=='2')//判断左边要画'|'的数字
{
cout<<'|';//画'|'
for(int psb=1;psb<=k;psb++)cout<<" "; //数字中间的空格
cout<<" ";//替代右边的'|'
}
if(a[j]=='6' || a[j]=='8' || a[j]=='0')//判断两边都要画'|'的数字
{
cout<<'|';//画'|'
for(int psb=1;psb<=k;psb++)cout<<" ";//数字中间的空格
cout<<'|';//画'|'
}
} if(i==3+k*2)//判断是否在最后一行那行
{
if(a[j]=='2' ||a[j]=='3' || a[j]=='5' || a[j]=='6' || a[j]=='8' || a[j]=='9'||a[j]=='0')//判断要画"-"的数字
{
for(int kkksc03=1;kkksc03<=k;kkksc03++)cout<<'-';//画出"-"
cout<<" ";//相邻两个数字之间有两个空格
}
else //如果不是那些数字就不画'-'
{
for(int kkksc03=1;kkksc03<=k;kkksc03++)cout<<' ';//用空格代替"-"
cout<<" ";//相邻两个数字之间有两个空格
}
}
}
cout<<endl; //换行,重!!!!
} return 0;//结束
}

题解洛谷P1538【迎春舞会之数字舞蹈】的更多相关文章

  1. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  2. 洛谷 P1538 迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  3. P1538 迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  4. P1538迎春舞会之数字舞蹈

    传送 输入输出样例:(洛咕的太丑了就不放了) (1前面有三个空格) 这真是一群闲(qian)圈(zou)的人.大号+小号提交了不下10遍终于a了 好了我们来研究一下这些数字"美观" ...

  5. Luogu P1538 迎春舞会之数字舞蹈 | 模拟

    题目链接 大水题,暴力输出,代码应该能看吧...... #include<iostream> #include<cstdio> using namespace std; int ...

  6. VIJOS-P1064 迎春舞会之数字舞蹈

    洛谷 P1538 迎春舞会之数字舞蹈 洛谷传送门 JDOJ 1245: VIJOS-P1064 迎春舞会之数字舞蹈 JDOJ传送门 Description ​ 在越来越讲究合作的时代,人们注意的更多的 ...

  7. 【洛谷P1538】迎春舞会之数字舞蹈

    迎春舞会之数字舞蹈 题目链接 一道奇怪的模拟题, 先将样例输出复制下来,观察观察 -- -- -- -- -- -- -- -- ① | | | | | | | | | | | | | | ② | | ...

  8. 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game

    洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...

  9. 题解 洛谷P5018【对称二叉树】(noip2018T4)

    \(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...

随机推荐

  1. java中高级面试利器(boot,cloud,vue前后端提升)

    https://github.com/Snailclimb/JavaGuide   Java知识大全(面试) https://github.com/doocs/advanced-java  Java工 ...

  2. FL studio系列教程(三):如何用FL Studio做电音

    电音制作,自然少不了适合做电音的软件,市面上可以进行电音制作的软件不少,可是如果在这些软件中只能选择一款的话,想必多数人会把票投给FL Studio,毕竟高效率是永远不变的真理,今天就让我们来看看如何 ...

  3. 思维导图iMindMap怎么做大型项目管理

    在大型企业中,有许多大型而复杂的项目,你要考虑内外部因素.期限以及你要达成的目标等等,所以我们要进行项目管理.下面小编教你怎么用iMindMap思维导图进行项目管理. iMindMap有一个工作区,以 ...

  4. Math对象-JavaScript

    Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法.Math 不是一个函数对象. Math 用于 Number 类型. Math 的所有属性与方法都是静态的. 属性 Math.E 欧拉常数 ...

  5. Lombok之@Builder注解

    Lombok之@Builder注解 前言 Lombok大家都知道,在使用POJO过程中,它给我们带来了很多便利,省下大量写get.set方法.构造器.equal.toString方法的时间.除此之外, ...

  6. Redis多线程原理详解

    本篇文章为你解答一下问题: 0:redis单线程的实现流程是怎样的? 1:redis哪些地方用到了多线程,哪些地方是单线程? 2:redis多线程是怎么实现的? 3:redis多线程是怎么做到无锁的? ...

  7. celery原理与组件

    1.Celery介绍 https://www.cnblogs.com/xiaonq/p/11166235.html#i1 1.1 celery应用举例 Celery 是一个 基于python开发的 分 ...

  8. 遇见BUG如何区分前后端

    定位前后端bug: 1.经验法: 软件测试人员应不断精进自己的技能,负责的项目多了,自然对功能的实现过程有了解,也就明白如何分类bug了. 例如: 网页上的某个图片的分辨率不对,如果我们了解实现过程, ...

  9. 硬RAID和软RAID

    RAID简介: RAID是 Redundant Array of Independent Disks的简写,意为独立磁盘冗余阵列,简称磁盘阵列.基本思想是把多个相对便宜的硬盘结合起来,称为一个磁盘阵列 ...

  10. 这篇建议java开发都看看,对Java方法及加深理解的很深,值得一看!

    方法和加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环 和 return 的区别 方法名:注意规范 见名知意 参数列表(参数类型,参数名)- 异常抛出 // Demo01 类 ...