zoukankan      html  css  js  c++  java
  • 洛谷P1538迎春舞会之数字舞蹈

    题目背景

    HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。

    题目描述

    在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列。

    为了配合每年的倒计时,同学们决定排出——“数字舞蹈”。顾名思义就是所有人一起排成若干个数字 -___-|||| 更为创新的是,每个人都是趴在地上,保证横竖。

    现在给出数字及其要求摆出的大小,请你编程,模拟同学们的优美姿态。

    输入输出格式

    输入格式:

    第一行为k。k表示要摆出数字的大小。

    第二行为全部由数字组成的字符串,即要摆出的几个数字。

    输出格式:

    按题目要求输出。

    输入输出样例

    输入样例#1:
    2
    1234567890
    
    输出样例#1:
          --   --        --   --   --   --   --   -- 
       |    |    | |  | |    |       | |  | |  | |  |
       |    |    | |  | |    |       | |  | |  | |  |
          --   --   --   --   --        --   --      
       | |       |    |    | |  |    | |  |    | |  |
       | |       |    |    | |  |    | |  |    | |  |
          --   --        --   --        --   --   -- 
    

    说明

    每个数字之前有1个空格,所有数字全部对齐。

    k<=30,s的长度不超过255

    --------------------------------------------------------------------------------------------------------------

    很水

    尽量来简化情况,把三个横着的对每个数字处理,两个竖着的对每个数字处理

    见代码

    WARN:洛谷的输入格式好xiejin,一开始用getline(),之前放一个getchar,结果一直WA,也不知道什么原因,还跟别人的程序打了一个对拍也没问题,结果直接cin就好了

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    using namespace std;
    int k,a[300],w,h,n;
    string s;
    char up[15]="- -- -----",mid[15]="  ----- --",down[15]="- -- -- --";
    int pos[2][15]={{2,1,1,1,2,0,0,1,2,2},{2,1,0,1,1,1,2,1,2,1}};
    int main(){
        //freopen("in.txt","r",stdin);
        //freopen("1.txt","w",stdout);
        
        cin>>k;
        cin>>s;
        for(n=0;n<s.size();n++) a[n+1]=s[n]-'0';
        w=k+2;h=2*k+3;
        for(int i=1;i<=h;i++)
            for(int j=1;j<=n;j++){
                //-
                if(i==1||i==k+2||i==h){
                    putchar(' ');
                    for(int z=1;z<=k;z++){        
                        if(i==1) putchar(up[a[j]]);
                        if(i==1+k+1) putchar(mid[a[j]]);
                        if(i==h) putchar(down[a[j]]); 
                    }
                    putchar(' ');
                }
                //|
                else{
                    int num=0;if(i>k+2) num=1;
                    for(int i=1;i<=w;i++){
                        if(pos[num][a[j]]==0&&i==1) putchar('|');
                        else if(pos[num][a[j]]==1&&i==w) putchar('|');
                        else if(pos[num][a[j]]==2&&(i==1||i==w)) putchar('|');
                        else putchar(' ');
                    }    
                }
                if(j!=n) putchar(' '); 
                if(j==n&&i!=h) putchar('
    ');
            }
    } 
  • 相关阅读:
    winform+cefSharp实现窗体加载浏览器
    C# 实现Mqqtnet 客户端,订阅发布信息
    winform+CefSharp 实现和js交互
    C# 读取INI文件
    H5+asp.net 微信开发 遇到过的坑
    C#读取Excel文件,准换为list
    vmware pro 15.5.5 官方下载地址
    IOS部分APP使用burpsuite抓不到包原因
    CVE-2020-0796 SMBv3本地提权
    网络摄像头rtsp协议登录认证
  • 原文地址:https://www.cnblogs.com/candy99/p/5787155.html
Copyright © 2011-2022 走看看