题目链接:http://poj.org/problem?id=1102

题目意思:就是根据给出的格式 s 和 数字 n,输出数值 n 的 LCD 显示。数值 n 的每个数字要占据 s + 2 列 和 2s + 3 行。数字和数字之间要有一个空格。数值与数值之间有一个空行。

  首先对于LCD 的 7 个笔画显示编上序号

  

然后对于数字 i,分析出占用了哪几个笔画,例如,数字 1 占有的笔画是 3 和 6;数字 6 占有的笔画是 1, 2, 4, 5, 6, 7

  用数组来存储每一个笔画分别被那些数字占有,如果是打横的笔画,就放在 horizontal[][] 上;打竖的笔画放在 vertical[][]。然后根据数值 n 来根据对应的horizontal[][] 和 vertical[][] 的占有情况来输出。

  

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int maxrow = + ;
const int maxcol = + ; // 数字0~9占有的笔画编号
// 打横的笔画,笔画编号分别为: 1 4 7
char horizontal[maxrow][maxcol] = {"- -- -----", " ----- --", "- -- -- --"};
// 打竖的笔画,笔画编号分别为: 2 3 5 6
char vertical[maxrow][maxcol] = {"| ||| ||", "||||| |||", "| | | | ", "|| |||||||"};
char n[maxcol];
int s, len; void get_horizontal(int row)
{
for (int j = ; j < len; j++)
{
printf(" ");
for (int i = ; i <= s; i++)
printf("%c", horizontal[row][n[j]-'']);
printf(" ");
}
} void get_vertical(int row)
{
for (int j = ; j < len; j++)
{
printf("%c", vertical[row][n[j]-'']);
for (int i = ; i <= s; i++)
printf(" ");
printf("%c ", vertical[row+][n[j]-'']);
}
} int main()
{
#ifndef Online_Judge
freopen("in.txt", "r", stdin);
#endif // Online_Judge
while (scanf("%d%s", &s, n) != EOF)
{
if (s == && !strcmp(n, ""))
break;
len = strlen(n);
for (int i = ; i <= *s+; i++) // 共 2s+3 行
{
if (i == ) // 第 1 行 打横的笔画
get_horizontal();
else if (i > && i < s+) // 第 2 ~ s+1 行 打竖的笔画
get_vertical();
else if (i == s+) // 第 s+2 行 打横的笔画
get_horizontal();
else if (i > s+ && i < *s+) // 第 s+3 ~ 2s+2 行 打竖的笔画
get_vertical();
else
get_horizontal(); // 第 2s+3 行 打横的笔画
printf("\n");
}
printf("\n");
}
printf("\n"); // 这个空行是是否 wa 的关键!要特别小心 = =
return ;
}

  

poj 1102.LC-Display 解题报告的更多相关文章

  1. Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)

     http://blog.csdn.net/geniusluzh/article/details/6619575 在说Tarjan算法解决桥和边双连通分量问题之前我们先来回顾一下Tarjan算法是如何 ...

  2. POJ 3126 Prime Path 解题报告(BFS & 双向BFS)

    题目大意:给定一个4位素数,一个目标4位素数.每次变换一位,保证变换后依然是素数,求变换到目标素数的最小步数. 解题报告:直接用最短路. 枚举1000-10000所有素数,如果素数A交换一位可以得到素 ...

  3. 【原创】poj ----- 2376 Cleaning Shifts 解题报告

    题目地址: http://poj.org/problem?id=2376 题目内容: Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K ...

  4. 【原创】poj ----- 1611 The Suspects 解题报告

    题目地址: http://poj.org/problem?id=1611 题目内容: The Suspects Time Limit: 1000MS   Memory Limit: 20000K To ...

  5. 【原创】poj ----- 2524 Ubiquitous Religions 解题报告

    题目地址: http://poj.org/problem?id=2524 题目内容: Ubiquitous Religions Time Limit: 5000MS   Memory Limit: 6 ...

  6. [POJ 1002] 487-3279 C++解题报告

        487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 228365   Accepted: 39826 D ...

  7. [POJ 1001] Exponentiation C++解题报告 JAVA解题报告

        Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 126980   Accepted: 30 ...

  8. poj 2389.Bull Math 解题报告

    题目链接:http://poj.org/problem?id=2389 题目意思:就是大整数乘法. 题目中说每个整数不超过 40 位,是错的!!!要开大点,这里我开到100. 其实大整数乘法还是第一次 ...

  9. poj 2421 Constructing Roads 解题报告

    题目链接:http://poj.org/problem?id=2421 实际上又是考最小生成树的内容,也是用到kruskal算法.但稍稍有点不同的是,给出一些已连接的边,要在这些边存在的情况下,拓展出 ...

  10. poj 1611 The Suspects 解题报告

    题目链接:http://poj.org/problem?id=1611 题意:给定n个人和m个群,接下来是m行,每行给出该群内的人数以及这些人所对应的编号.需要统计出跟编号0的人有直接或间接关系的人数 ...

随机推荐

  1. html5手机常见问题与工具分享

    mobileTech A useful tools or tips list for mobile web application developing 这个项目收集移动端开发所需要的一些资源与小技巧 ...

  2. 【转载】Ubuntu 系列安装 Docker

    系统要求 Docker 支持以下版本的Ubuntu操作系统: Ubuntu Xenial 16.04 (LTS) Ubuntu Wily 15.10 Ubuntu Trusty 14.04 (LTS) ...

  3. javascript 2048游戏

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 2013nanjignB

    B - Poor Warehouse Keeper Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  5. 【C语言入门教程】5.6 函数库和文件

    函数库是为代码复用建立的,将同一类型,需要在不同的程序里使用的函数放置在一起,就组成了一个函数库.如 C 语言的标准库,它集合了开发者常用的函数.开发者自行编写的函数也可以组成函数库,通常称之为自定义 ...

  6. jekyll 安装过程

    如果有, linux以源码包方式发布, 方便,快捷, 容易出错,安装内容难找到,版本容易冲突.兼容性会出错.如何解决这种方式:1.上网查找答案,你遇到的别人也有,关键词匹配到,好像没有别的办法解决了, ...

  7. IE8 margin: auto 无法居中

    需要给body元素添加属性 body { text-align: center; width: 100%; } ok,可以正常居中.

  8. Redis学习笔记八:独立功能之二进制位数组

    Redis 提供了 setbit.getbit.bitcount.bitop 四个命令用于处理二进制位数组. setbit 命令用于为位数组指定偏移量上的二进制位设置值,偏移量从 0 开始计数. ge ...

  9. 读w3c中文教程对键盘事件解释的感想 -遁地龙卷风

    写这篇博文源于w3c中文教程对键盘事件的解释, onkeydown 某个键盘按键被按下 onkeypress 某个键盘按键被按下并松开 onkeyup 某个键盘按键被松开 可在实践中发现 只注册key ...

  10. Android ListView 图片异步加载和图片内存缓存

    开发Android应用经常需要处理图片的加载问题.因为图片一般都是存放在服务器端,需要联网去加载,而这又是一个比较耗时的过程,所以Android中都是通过开启一个异步线程去加载.为了增加用户体验,给用 ...