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

不想你离开。 提交于 2019-12-01 18:21:04

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

洛谷传送门

JDOJ 1245: VIJOS-P1064 迎春舞会之数字舞蹈

JDOJ传送门

Description

​ 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列。 为了配合每年的倒计时,同学们决定排出——“数字舞蹈”。顾名思义就是所有人一起排成若干个数字 -___-|||| 更为创新的是,每个人都是趴在地上,保证横竖。 现在给出数字及其要求摆出的大小,请你编程,模拟同学们的优美姿态。

Input

​ 第一行为k。k表示要摆出数字的大小。 第二行为全部由数字组成的字符串,即要摆出的几个数字。

Output

​ 按题目要求输出。

Sample Input

2 1234567890

Sample Output

​ -- -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- --

HINT

每个数字之前有1个空格,所有数字全部对齐。 k< =30,s的长度不超过255 建议大家直接输出,不要保存。 如果对于大小和k有疑问,请点击[url=http://www.Vijos.cn/ProblemImg/P1064.txt]这里[/url]下载当k=3时对于上述样例输入的标准输出,自行理解。

题解:

字符串模拟+打表。

这是一种玄学的思路,解释也解释不清,自己看代码吧:

#include<bits/stdc++.h>
using namespace std;
int k;
string s,m[10]={"-|| ||-","  |  | ","- |-| -",
                "- |- |-"," ||- | ",    "-| - |-","-| -||-",
                "- |  | ","-||-||-","-||- |-"};
int main()
{
    
    cin>>k>>s;
    for(int p=0;p<7;p++)
    {
        if(p==2 || p==5) 
            continue;
        if(p%3==0)
        {
            for(int i=0;i<s.size();i++)
            {
                printf(" ");
                for(int j=0;j<k;j++)
                    cout<<m[s[i]-48][p];
                printf("  ");
            }
            puts("");       
        }
        else
        {
            for(int q=0;q<k;q++)
            {
                for(int i=0;i<s.size();i++)
                {
                    cout<<m[s[i]-48][p];
                    for(int j=0;j<k;j++)
                        printf(" ");
                    cout<<m[s[i]-48][p+1]<<' ';
                }
                puts("");
            }
        }
    }
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!