洛谷 P1538 迎春舞会之数字舞蹈
JDOJ 1245: VIJOS-P1064 迎春舞会之数字舞蹈
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; }