`

LC Display这道题害我到一点才睡

    博客分类:
  • ACM
阅读更多
http://acm.jlu.edu.cn/joj/showproblem.php?pid=1025
老是Presentation Error,无语了!
#include<iostream>
#include<string>
using namespace std;
//Horizonal state:
//0: skip; 1: '-' required
//Vertical state:
//0: skip; 1: single right '|'
//2: single left '|' 3:both lines

const int lcDisplayData[10][5] = {
	{1,3,0,3,1},//0 five rows 
	{0,1,0,1,0},//1
	{1,1,1,2,1},//2
	{1,1,1,1,1},//3
	{0,3,1,1,0},//4
	{1,2,1,1,1},//5
	{1,2,1,3,1},//6
	{1,1,0,1,0},//7
	{1,3,1,3,1},//8
	{1,3,1,1,1}//9
};
//H represent Horizonal
//V represent Vertical
//D represent Done
char cdStates[] = {
	'H','V','H','V','H','D'
};

string horizonal_segment(int type,int sz){
	int i = 0;
	string segment = "";
	segment.push_back(' ');
	switch(type){
		case 1:
			for(i = 0; i < sz; i++)
				segment.push_back('-');	
			break;
		case 0:
			for(i = 0; i < sz; i++)
				segment.push_back(' ');
			break;
		default:
			break;
	}
	segment.push_back(' ');
	segment.push_back(' ');//blank between digit
	return segment;
}

string vertical_segment(int type, int sz){
	string segment = "";
	int i;
	switch(type){
		case 1:
			segment.push_back(' ');
			for(i = 0; i < sz; i++)
				segment.push_back(' ');
			segment.push_back('|');
			break;
		case 2:
			segment.push_back('|');
			for(i = 0; i < sz; i++)
				segment.push_back(' ');
			segment.push_back(' ');
			break;
		case 3:
			segment.push_back('|');
			for(i = 0; i < sz; i++)
				segment.push_back(' ');
			segment.push_back('|');
			break;
		default:
			segment.push_back(' ');
			for(i = 0; i < sz; i++)
				segment.push_back(' ');
			segment.push_back(' ');
			break;
	}
	segment.push_back(' ');//blank between digit
	return segment;
}

void display(int size,string num){
	int i,j,k;
	for(i = 0; i < 6; i++){
		string line = "";
		switch(cdStates[i]){
			case 'H':
				for(j = 0; j < num.length(); j++){
					line.append( horizonal_segment(lcDisplayData[ num[j]-'0' ][i],size) );
				}
				cout << line.substr(0,line.length()-1) << endl;//use substr remove last ' '
				break;
			case 'V':
				for(k = 0; k < size; k++){
					line = "";
					for(j = 0; j < num.length(); j++){
						line.append(vertical_segment(lcDisplayData[ num[j]-'0' ][i],size));
					}
					cout << line.substr(0,line.length()-1) << endl;
				}
				break;
			case 'D':
				break;
		}
	}
}

int main(){
	int size;
	string num;
	int flag = 0;
	while(cin >> size >> num){
		if(flag)
			cout << endl;
		else
			flag = 1;
		display(size,num);	
	}
}
分享到:
评论

相关推荐

    25LC512_SPI_25LC512_25LC_

    标题中的"25LC512_SPI_25LC512_25LC_"指的是Microchip Technology公司生产的一种串行电可擦可编程只读存储器(Serial Electrically Erasable Programmable Read-Only Memory,简称EEPROM)——25LC512。这个器件是...

    25LC1024.rar_25lc 电路_25lc1024

    25LC1024是一款常见的电可擦除可编程只读存储器(EEPROM),在电子设备中常用于数据存储。此压缩包文件包含了关于25LC1024芯片的操作资料,尤其是读写操作的说明。接下来,我们将详细讨论这款芯片的主要特点、工作...

    LC 巴伦分析.pdf

    此外,差分信号还可以有效提升电路的噪声容限,对于高速数字系统中的信号完整性来说,这一点至关重要。 在进行电路设计时,需要特别注意信号的带宽和频率。由于LC巴伦的带宽限制,它通常只适用于在中心工作频率附近...

    LC滤波和LC-π型滤波电路(a)

    LC滤波和LC-π型滤波电路是电子工程中常用的滤波技术,主要用于去除电源中的交流噪声,提供稳定的直流输出。这两种滤波电路在硬件设计和原理图设计中具有重要地位,尤其对于高精度电源系统和敏感电子设备至关重要。 ...

    LC1860C数据手册 LC1860 Datasheet Leadcore

    LC1860C 数据手册 一、概述 LC1860C 数据手册为使用 LC1860C 芯片的用户提供了详细的介绍,涵盖了芯片的功能特性、系统结构和各模块的基本信息。该手册适用于具备通信及软件编程方面基础知识的用户。 二、系统...

    24LC64_24LC64中英文数据手册PDF_

    《24LC64存储器技术详解》 24LC64是一款常见的电可擦除只读存储器(EEPROM),广泛应用于各种电子设备中,如嵌入式系统、智能家居设备以及工业控制系统等。该器件提供了64千字节(8192 x 8位)的数据存储空间,具有...

    lc3 汇编编程工具

    LC3汇编编程工具是一种基于LC-3(Little Computer 3)指令集架构的模拟器,主要用于教育和学习汇编语言编程。LC-3是一种简化的计算机系统模型,设计用于帮助初学者理解计算机硬件和软件的基本工作原理。下面将详细...

    LC3使用指南-中文1

    总之,这份“LC3 使用指南-中文1”为 Windows 用户提供了一套完整的 LC-3 学习路径,从编写简单的程序到使用模拟器进行调试,再到深入理解 LC-3 的内部工作机制。通过实践和探索,读者可以逐步掌握 LC-3 汇编语言...

    lc-3模拟器

    为了充分利用这个工具,建议用户先了解LC-3的基本指令集和架构原理,然后尝试编写简单的程序,逐步深入到更复杂的算法和数据结构。通过不断的实践和实验,可以有效地提高对计算机底层运作的理解。

    LC3 plus详细介绍

    LC3 Plus,全称为Low Complexity Communication Codec Plus,是一种先进的音频编解码技术,主要用于实现低延迟、高质量的音频传输。该算法在BLE(Bluetooth Low Energy)通信中扮演着重要角色,尤其是在物联网设备、...

    LC谐振频率计算器

    在电子工程领域,LC谐振是至关重要的概念,它涉及到信号传输、滤波器设计、无线电通信等多个方面。LC谐振电路在特定频率下能够实现最高阻抗或最低阻抗,这个频率就被称为谐振频率。 首先,我们需要理解LC谐振的基本...

    LC振荡频率计算器LC震荡频率计算工具lc调频振荡计算软件

    非常有用的 LC振荡频率计算器LC震荡频率计算工具lc调频振荡计算软件 简单易用,小巧精简,lc振荡频率计算器。调频振荡计算器,收音机频率,高频振荡计算软件,LC振荡频率计算软件。 无线振荡计算 LC计算公式 绿色...

    LC滤波和LC-π型滤波电路(b)

    LC滤波和LC-π型滤波电路是电子工程中常用的滤波技术,主要用于去除电源中的交流噪声,提供稳定的直流输出。这两种滤波电路在硬件设计中占据着重要的地位,尤其是在电源供应、信号处理和通信系统等领域。 首先,LC...

    lc3tools_v12.zip

    在这个"lc3tools_v12.zip"压缩包中,包含的是一个Linux版本的LC3汇编语言编译和仿真工具集,帮助用户将LC3汇编代码转化为机器码,并进行仿真运行。 首先,我们来详细了解一下LC3汇编语言。LC3汇编语言是由一系列...

    lc振荡器显示 及应用 考试题

    LC振荡器是一种重要的电子设备,常用于无线通信、雷达系统和测试设备中,用于产生特定频率的电磁波。在本文中,我们将深入探讨一种电压控制的LC振荡器系统,该系统结合了压控振荡器(VCO)、数字锁相环(PLL)、...

    LC滤波电路分析LC滤波电路分析

    LC 滤波电路分析 LC 滤波电路是指利用电感、电容和电阻的组合设计构成的滤波电路,主要用于除去某一次或多次谐波。LC 滤波电路可以分为无源滤波电路和有源滤波电路两大类。无源滤波电路是指不需要额外提供电源的...

    E_FIXED_LC/D_LC

    标题"E_FIXED_LC/D_LC"以及描述"improving effectiveness by exploiting side information"提示我们,这可能涉及一种利用辅助信息提高系统效率的技术,特别是与数据编码或信号处理相关。在IT领域,"side information...

    LC7981驱动[160×80][AVR]_lc7981_LC7981C语言AVR_

    总结来说,LC7981在AVR上的驱动涉及到AVR的I/O操作、时序控制、LCD控制器的命令和数据传输,以及显示内容的内存管理。通过理解和应用这些知识点,你可以编写出高效、稳定的LC7981驱动程序,实现丰富的图形和文本显示...

    LC:matlab_LC_LC算法(matlab)_

    总之,LC算法在MATLAB中的实现涉及到了动态规划思想,它能够有效地找出两个序列的最长公共子序列。这样的实现对于理解序列比较的原理,以及在MATLAB环境中进行序列分析问题的解决,都是非常有价值的。通过学习和实践...

Global site tag (gtag.js) - Google Analytics