显示器 OpenJ_Bailian - 2745
2017-01-29 14:09
423 查看
显示器 OpenJ_Bailian - 2745
描述你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。
Input
输入包括若干行,每行表示一个要显示的数。每行有两个整数s和n (1 <= s <= 10, 0 <= n <= 99999999),这里n是要显示的数,s是要显示的数的尺寸。
如果某行输入包括两个0,表示输入结束。这行不需要处理。
Output
显示的方式是:用s个’-‘表示一个水平线段,用s个’|’表示一个垂直线段。这种情况下,每一个数字需要占用s+2列和2s+3行。另外,在两个数字之间要输出一个空白的列。在输出完每一个数之后,输出一个空白的行。注意:输出中空白的地方都要用空格来填充。
Sample Input
2 12345
3 67890
0 0
思路
简单的模拟,先用空格进行初始化,然后再对不同的数字进行不同的操作存储。注意细节,两个数字之间的空列,以及空行等等。。
下面是代码
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <climits> #include <cstring> #include <string> #include <set> #include <map> #include <queue> #include <stack> #include <vector> #include <list> #define rep(i,m,n) for(i=m;i<=n;i++) #define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++) const int inf_int = 2e9; const long long inf_ll = 2e18; #define inf_add 0x3f3f3f3f #define mod 1000000007 #define vi vector<int> #de 4000 fine pb push_back #define mp make_pair #define fi first #define se second #define pi acos(-1.0) #define pii pair<int,int> #define Lson L, mid, rt<<1 #define Rson mid+1, R, rt<<1|1 const int maxn=5e2+10; using namespace std; int main() { char map[300][200]; char s[10]; int n,l,f,x; while(1) { memset(map,' ',sizeof(map));//初始化 x=1; cin>>n; getchar(); gets(s); if(n==0) return 0; l=strlen(s); for(int i=0;i<l;i++) //不同的数字用不同的存储方法,将相应的字符存入map二维字符数组中 { f=s[i]-'0'; if(f==0) { for(int j=x+1;j<x+n+1;j++) map[1][j]=map[2*n+3][j]='-'; for(int j=2;j<2*n+3;j++) { if(j!=2+n) map[j][x]=map[j][x+n+1]='|'; } x=x+3+n; } else if(f==1) { for(int j=2;j<2*n+3;j++) { if(j!=2+n) map[j][x+n+1]='|'; } x=x+3+n; } else if(f==2) { for(int j=2;j<=n+1;j++) map[j][x+n+1]='|'; for(int j=3+n;j<2*n+3;j++) map[j][x]='|'; for(int j=x+1;j<x+n+1;j++) map[1][j]=map[2+n][j]=map[2*n+3][j]='-'; x=x+3+n; } else if(f==3) { for(int j=x+1;j<x+n+1;j++) map[1][j]=map[2+n][j]=map[2*n+3][j]='-'; for(int j=2;j<2*n+3;j++) { if(j!=2+n) map[j][x+n+1]='|'; } x=x+3+n; } else if(f==4) { for(int j=x+1;j<=x+n;j++) map[2+n][j]='-'; for(int j=2;j<2*n+3;j++) { if(j!=2+n) map[j][x+n+1]='|'; } for(int j=2;j<=n+1;j++) map[j][x]='|'; x=x+3+n; } else if(f==5) { for(int j=x+1;j<x+n+1;j++) map[1][j]=map[2+n][j]=map[2*n+3][j]='-'; for(int j=2;j<=1+n;j++) map[j][x]='|'; for(int j=3+n;j<2*n+3;j++) map[j][x+n+1]='|'; x=x+3+n; } else if(f==6) { for(int j=2;j<2*n+3;j++) { if(j!=2+n) map[j][x]='|'; } for(int j=3+n;j<2*n+3;j++) map[j][x+n+1]='|'; for(int j=x+1;j<x+n+1;j++) map[1][j]=map[2+n][j]=map[2*n+3][j]='-'; x=x+3+n; } else if(f==7) { for(int j=x+1;j<x+n+1;j++) map[1][j]='-'; for(int j=2;j<2*n+3;j++) { if(j!=2+n) map[j][x+n+1]='|'; } x=x+3+n; } else if(f==8) { for(int j=2;j<2*n+3;j++) { if(j!=2+n) map[j][x]=map[j][x+n+1]='|'; } for(int j=x+1;j<x+n+1;j++) map[1][j]=map[2+n][j]=map[2*n+3][j]='-'; x=x+3+n; } else if(f==9) { for(int j=2;j<=n+1;j++) map[j][x]='|'; for(int j=2;j<2*n+3;j++) { if(j!=2+n) map[j][x+n+1]='|'; } for(int j=x+1;j<x+n+1;j++) map[1][j]=map[2+n][j]=map[2*n+3][j]='-'; x=x+3+n; } } for(int i=1;i<=2*n+3;i++) //输出 { for(int j=1;j<=x;j++) printf("%c",map[i][j]); printf("\n"); } cout<<endl; } return 0; }
相关文章推荐
- 假期训练——OpenJ_Bailian - 2745 显示器 模拟
- [OpenJ_Bailian](2755)神奇的口袋 ---- 递归/动态规划
- POJ 2745 显示器 解题报告
- POJ 3580 OpenJ_Bailian 4090 SuperMemo (伸展树模版)
- OpenJ_Bailian 2980 || POJ 2389 大整数乘法
- OpenJ_Bailian - 3421
- 【OpenJ_Bailian】4118 - 开餐馆(dp)
- OpenJ_Bailian - 2748
- OpenJ_Bailian 2755 神奇的口袋
- [OpenJ_Bailian - 4124 海贼王之伟大航路] DFS+二进制状态压缩 / 状压DP
- 拦截导弹 OpenJ_Bailian - 2945
- POJ 2745 显示器
- 百练2745:显示器
- OpenJ_Bailian - 4147
- OpenJ_Bailian - 3752 走迷宫 (水题:深搜&&广搜 比较)
- POJ 百练 2745: 显示器
- 【OpenJ_Bailian 4120】 + dp
- poj 2745显示器(模拟)
- OpenJ_Bailian - 4120 硬币(母函数)
- OpenJ_Bailian - 2754:八皇后