题解洛谷P1538【迎春舞会之数字舞蹈】
方法:暴力,判断,输出
本题为了更好理解建议各位可以复制样例来研究,甚至可以复制题解来测试思想,相信大家不会抄。
有什么不好的请大佬们在评论里指出,谢谢
#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【迎春舞会之数字舞蹈】的更多相关文章
- 洛谷P1538迎春舞会之数字舞蹈
		
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
 - 洛谷 P1538 迎春舞会之数字舞蹈
		
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
 - P1538 迎春舞会之数字舞蹈
		
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
 - P1538迎春舞会之数字舞蹈
		
传送 输入输出样例:(洛咕的太丑了就不放了) (1前面有三个空格) 这真是一群闲(qian)圈(zou)的人.大号+小号提交了不下10遍终于a了 好了我们来研究一下这些数字"美观" ...
 - Luogu P1538 迎春舞会之数字舞蹈 | 模拟
		
题目链接 大水题,暴力输出,代码应该能看吧...... #include<iostream> #include<cstdio> using namespace std; int ...
 - VIJOS-P1064 迎春舞会之数字舞蹈
		
洛谷 P1538 迎春舞会之数字舞蹈 洛谷传送门 JDOJ 1245: VIJOS-P1064 迎春舞会之数字舞蹈 JDOJ传送门 Description  在越来越讲究合作的时代,人们注意的更多的 ...
 - 【洛谷P1538】迎春舞会之数字舞蹈
		
迎春舞会之数字舞蹈 题目链接 一道奇怪的模拟题, 先将样例输出复制下来,观察观察 -- -- -- -- -- -- -- -- ① | | | | | | | | | | | | | | ② | | ...
 - 洛谷 2953  [USACO09OPEN]牛的数字游戏Cow Digit Game
		
洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...
 - 题解 洛谷P5018【对称二叉树】(noip2018T4)
		
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...
 
随机推荐
- 思维导图软件iMindMap怎么使用
			
人人都说,思维导图记忆法实用.可是,我们应该如何使用思维导图呢?又该如何从思维小白摇身一变成为逻辑大神呢?俗话说,心急吃不了热豆腐,让我们一步一步来,慢慢接触使用思维导图吧. 小编作为"过来 ...
 - word教程字体和段落设置
			
放大/缩小字号:1.选中文字-点击"大A"或"小A" 2.同时摁着ctrl+shift+>/ctrl+shift+<即可 设置标题与正文间距:鼠标放 ...
 - C语言编程学习者问答第一期,看看这些问题你出现过吗?
			
今天给大家分享我们学习基地的小伙伴遇到的问题,以及正确回答,看看这些问题你遇到过吗~ 1.这张图片文字"第二段"后面的说法是否有问题? 回答: 这是二进制的加法,很多人会误解减 ...
 - Jenkins忘记管理员账户密码如何解决?
			
未修改初始密码时 进入Jenkins工作目录,读取初始密码文件initialAdminPassword: cat initialAdminPassword 然后在登陆页面使用该密码登陆admin用户, ...
 - sqli-labs-master less06
			
第六关与第五关步骤无区别,请参考 sqli-labs-master less05 及 Burp Suite暴力破解示例 区别:在第二步判断注入类型时发现 加单引号与不加单引号没有区别,加双引号时报错, ...
 - 【译】理解Rust中的局部移动
			
原文标题:Understanding Partial Moves in Rust 原文链接:https://whileydave.com/2020/11/30/understanding-partia ...
 - 树莓派自动连接WiFi
			
使用sudo raspi-config配置好第一个wifi 然后只需要修改一个文件sudo nano /etc/wpa_supplicant/wpa_supplicant.conf 内容如下: ctr ...
 - vue上传视屏或者图片到七牛云
			
首先下载七牛云的JavaScript-SDK npm install qiniu-js 下载完成JavaScript-SDK以后就可以上传图片信息了 <template> <div& ...
 - 单调栈模板 POJ3250
			
上次二分st表大法失败以后的又一次尝试233333 封装,封装,封装!!!!!! #include <bits/stdc++.h> using namespace std; #define ...
 - moviepy音视频剪辑:使用fl_time报错OSError: MoviePy error: failed to read the first frame of video file
			
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在m ...