题目描述
在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列。
为了配合每年的倒计时,同学们决定排出——“数字舞蹈”。顾名思义就是所有人一起排成若干个数字 -\_\_\_-|||| 更为创新的是,每个人都是趴在地上,保证横竖。
现在给出数字及其要求摆出的大小,请你编程,模拟同学们的优美姿态。
输入输出格式
输入格式:
第一行为k。k表示要摆出数字的大小。
第二行为全部由数字组成的字符串,即要摆出的几个数字。
输出格式:
按题目要求输出。
输入输出样例
输入样例#1:
2
1234567890输出样例#1:
-- -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- --
思路:
- 用一个字符数组保存0~9的摆法
- 每个数字是用最多7根线摆出,枚举7次
- 一共可以分成打印横线、打印竖线两种情况,横线的是第0、3、6次,竖线的是第1、2、4、5次
- 在处理竖线第1、4次,顺便将2、5次解决,因此第2、5次跳过即可
源代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
string map[10]={"-|| ||-"," | | ","- |-| -",
"- |- |-"," ||- | ","-| - |-",
"-| -||-","- | | ","-||-||-",
"-||- |-"};//用字符串数组存储0~9的摆法
string str;
int k;
int i,j,t,l;
cin>>k>>str;//输入数字大小与字符串
for(i=0;i<7;i++)//每个数字最多由7个摆出,枚举7次,逐个判断是否打印
{
if(i==2||i==5)//打印竖线是第1、2、4、5个,在处理1、4的时候顺便处理2、5,因此在2、5跳过
continue;
if(i==0||i==3||i==6)//打印横线是第0、3、6个
{
for(j=0;j<str.size();j++)
{
cout<<" ";
for(t=0;t<k;t++)//以数字大小k为基准,打印k次
cout<<map[str[j]-48][i];
cout<<" ";
}
cout<<endl;
}
else//打印竖线是第1、4个
{
for(j=0;j<k;j++)//以数字大小k为基准,打印k次
{
for(t=0;t<str.size();t++)
{
cout<<map[str[t]-48][i];//第1、4行
for (l=0;l<k;l++)
cout<<" ";
cout<<map[str[t]-48][i+1]<<" ";//第2、5行
}
cout<<endl;
}
}
}
return 0;
}