洛谷在线测试P1538迎春舞会之数字舞蹈
2016-08-17 07:48
190 查看
/* Name: Copyright: Author: 巧若拙 Date: 16/08/16 21:12 Description: P1538迎春舞会之数字舞蹈 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列。 为了配合每年的倒计时,同学们决定排出——“数字舞蹈”。顾名思义就是所有人一起排成若干个数字 -___-|||| 更为创新的是,每个人都是趴在地上,保证横竖。 现在给出数字及其要求摆出的大小,请你编程,模拟同学们的优美姿态。 输入输出格式 输入格式: 第一行为k。k表示要摆出数字的大小。 第二行为全部由数字组成的字符串,即要摆出的几个数字。 输出格式: 按题目要求输出。 输入输出样例 输入样例#1: 2 1234567890 输出样例#1: -- -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- -- | | | | | | | | | | | | | | | | | | | | | | | | | | -- -- -- -- -- -- -- 说明 每个数字之前有1个空格,所有数字全部对齐。 k<=30,s的长度不超过255 建议大家直接输出,不要保存。 如果对于大小和k有疑问,请自行理解。 评测结果:Accepted 得分: 100 提交时间:2016-08-17 07:00 耗时:8ms 内存:18375kb 算法思路一:
用一个二维数组模拟七段管来表示每个数字,下标0-9分别表示数字0-9. 为了便于输出,特设置七段管顺序为: 1 0 2 3 4 6 5 即下标1,3,5分别对应第1,3,5行的"-"符号,第2行包括下标为0,2的"|"符号,第4行包括下标为4,6的"|"符号。 七段管共5行,依次输出七段管的每一行,并用空格把字符串中的每个数字用空格隔开(确保能在同一行中输出全部字符串) 如果是七段管第1,3,5行,输出size个"-"符号;如果是七段管第2,4行,输出size行"|"符号(中间还有size个空格)。 */ #include<iostream> #include<vector> #include<string> using namespace std; void PrintNum(int num, int size, int row); //七段管顺序为 // 1 //0 2 // 3 //4 6 // 5 char numLib[10][8] = {"|-| |-|"," | |", " -|-|- ", " -|- -|", "| |- |", "|- - -|", "|- -|-|", " -| |", "|-|-|-|", "|-|- -|"}; int main() { int size; string num; cin >> size; cin >> num; for (int row=1; row<=5; row++)//依次输出七段管的每一行 { if (row % 2 == 1)//第1,3,5行 { for (int i=0; i<num.size(); i++) { PrintNum(num[i]-'0', size, row); cout << ' '; } cout << endl; } else //第2,4行 { for (int i=0; i<size; i++) //共size行"|" { for (int i=0; i<num.size(); i++) { PrintNum(num[i]-'0', size, row); cout << ' '; } cout << endl; } } } return 0; } void PrintNum(int num, int size, int row)//打印七段管的每一行 { if (row % 2 == 1)//第1,3,5行 { cout << ' '; for (int i=0; i<size; i++) { cout << numLib[num][row]; //下标1,3,5分别对应第1,3,5行的"-"符号 } cout << ' '; } else if (row == 2)//第2行 ,包括下标为0,2的"|"符号 { cout << numLib[num][0]; for (int i=0; i<size; i++) { cout << ' '; } cout << numLib[num][2]; } else //第4行 ,包括下标为4,6的"|"符号 { cout << numLib[num][4]; for (int i=0; i<size; i++) { cout << ' '; } cout << numLib[num][6]; } }
/* 算法思路二: (比方法一更为直观的思路,代码也更简洁) 用5个字符串分别模拟七段管的1-5行来表示每个数字。 其中第1,3,5行每个数字只有一个符号"-" 或" ",下标0-9分别表示数字0-9; 第2,4行每个数字有两个符号"|"或" ",下标i*2和i*2+1分别表示数字i在该行的两个符号。 分别用两个不同的函数来输出第1,3,5行和第2,4行。 */ #include<iostream> #include<vector> #include<string> using namespace std; void PrintRow_1_3_5(const string ROW, const string numStr, int size);//打印七段管的第1,3,5行 void PrintRow_2_4(const string ROW, const string numStr, int size);//打印七段管的第2,4行 //分别表示七段管0-9个数字在1-5行中对应位置的符号,其中第1,3,5行每个数字只有一个符号"-" 或" ";第2,4行每行有两个符号"|"或" "。 const string ROW_1 = "- -- -----"; const string ROW_2 = "|| | | |||| | |||||"; const string ROW_3 = " ----- --"; const string ROW_4 = "|| || | | ||| ||| |"; const string ROW_5 = "- -- -- --"; int main() { int size; string numStr; cin >> size; cin >> numStr; //依次输出七段管的每一行 PrintRow_1_3_5(ROW_1, numStr, size); PrintRow_2_4(ROW_2, numStr, size); PrintRow_1_3_5(ROW_3, numStr, size); PrintRow_2_4(ROW_4, numStr, size); PrintRow_1_3_5(ROW_5, numStr, size); return 0; } void PrintRow_1_3_5(const string ROW, const string numStr, int size)//打印七段管的第1,3,5行 { int len = numStr.size(); for (int i=0; i<len; i++) { cout << ' '; for (int j=0; j<size; j++) //输出size个"-" 或" " { cout << ROW[numStr[i]-'0']; } cout << ' ' << ' '; } cout << endl; } void PrintRow_2_4(const string ROW, const string numStr, int size)//打印七段管的第2,4行 { int len = numStr.size(); for (int j=0; j<size; j++) //输出size行"|"或 " " { for (int i=0; i<len; i++) { int pos = (numStr[i]-'0') * 2; cout << ROW[pos]; for (int k=0; k<size; k++)//输出size个空格 { cout << ' '; } cout << ROW[pos+1]; cout << ' '; } cout << endl; } }
相关文章推荐
- 洛谷——1538 迎春舞会之数字舞蹈
- 洛谷1538 迎春舞会之数字舞蹈
- 洛谷 P1538 迎春舞会之数字舞蹈
- 洛谷在线测试P1878_舞蹈课
- vijos1064迎春舞会之数字舞蹈
- 迎春舞会之数字舞蹈
- extjs数字校园-云资源平台 2014.2.17-在线打字测试
- P1538 迎春舞会之数字舞蹈
- P1538 迎春舞会之数字舞蹈
- 洛谷在线测试P1168_中位数
- 迎春舞会之数字舞蹈
- 洛谷在线测试P3378_模板堆
- 洛谷P1538 迎春舞会之数字舞蹈
- 在线测试电脑配置--看看你的电脑能玩最新的游戏么!
- 关于数字的智力测试
- 数字倒数跳转的js代码(已测试通过)
- 正则表达式在线测试
- 用31个免费在线工具来测试你网站各项性能
- 转一份在 51testing 上的讨论——如何测试一个门户网站是否可以支持10万用户同时在线?
- [资源]在线工具测试网页载入速度