poj 2136 Vertical Histogram 解题报告
题目链接:http://poj.org/problem?id=2136
题意不难理解,就是输入四行字符串(每行字符总数不超过72个),统计26个英文字母的数目,并按柱状图的形式输出。我的思路就是,先用一维数组total[]统计每个英文字母的个数,接着找出最大的频率,保存在max中;紧接着用一个二维数组word[][](这个比较关键)记录每一个字母在0~max中是否存储数据,有的话则置1,没有则为0。(假如:字母'A'的频率是2,max = 10,那么word[0][0] = 0, word[0][1] = 1, word[0][2] = 1, word[0][3] = 0......word[0][10] = 0,代表)接着用两重循环输出表格即可。
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std; const int maxn = ; int main()
{
char s[];
int i, j, n, len, max, total[maxn], word[maxn][];
n = ;
memset(total, , sizeof(total));
while (n--)
{
gets(s);
len = strlen(s);
for (i = ; i < len; i++)
{
total[s[i]-'A']++; // 统计每个字母出现的次数(total[0]对应'A',total[1]对应'B',依此类推)
}
}
max = total[];
for (i = ; i <= ; i++)
{
if (max < total[i]) // 在所有字母中找出最大的出现次数
max = total[i];
}
memset(word, , sizeof(word));
for (i = ; i <= ; i++)
{
for (j = ; j <= total[i]; j++)
{
word[i][j] = ; // 标记每个字母出现的数目
}
}
for (i = max; i > ; i--)
{
for (j = ; j <= ; j++)
{
if (!word[j][i] && j == )
{
printf(" ");
}
else if (word[j][i] && j == )
printf("*");
else if (!word[j][i])
printf(" ");
else if (word[j][i])
printf(" *");
}
printf("\n");
}
for (i = ; i <= ; i++)
{
if (i == )
printf("%c", i + 'A');
else
printf(" %c", i + 'A');
}
printf("\n");
return ;
}
poj 2136 Vertical Histogram 解题报告的更多相关文章
- Poj 2136 Vertical Histogram(打印垂直直方图)
一.Description Write a program to read four lines of upper case (i.e., all CAPITAL LETTERS) text inpu ...
- POJ 2136 Vertical Histogram(当时写的比较恶心,优化一下)
Vertical Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21223 Accepted: 10048 ...
- POJ 2136 Vertical Histogram
题意:按样例那样模拟…… 解法:模拟…… 代码: #include<stdio.h> #include<iostream> #include<algorithm> ...
- Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)
http://blog.csdn.net/geniusluzh/article/details/6619575 在说Tarjan算法解决桥和边双连通分量问题之前我们先来回顾一下Tarjan算法是如何 ...
- POJ 3126 Prime Path 解题报告(BFS & 双向BFS)
题目大意:给定一个4位素数,一个目标4位素数.每次变换一位,保证变换后依然是素数,求变换到目标素数的最小步数. 解题报告:直接用最短路. 枚举1000-10000所有素数,如果素数A交换一位可以得到素 ...
- 【原创】poj ----- 2376 Cleaning Shifts 解题报告
题目地址: http://poj.org/problem?id=2376 题目内容: Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K ...
- 【原创】poj ----- 1611 The Suspects 解题报告
题目地址: http://poj.org/problem?id=1611 题目内容: The Suspects Time Limit: 1000MS Memory Limit: 20000K To ...
- 【原创】poj ----- 2524 Ubiquitous Religions 解题报告
题目地址: http://poj.org/problem?id=2524 题目内容: Ubiquitous Religions Time Limit: 5000MS Memory Limit: 6 ...
- [POJ 1002] 487-3279 C++解题报告
487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 228365 Accepted: 39826 D ...
随机推荐
- 获取手机的gps定位
只要手机有GPS模块,可以用HTML5的Geolocation接口获取 在HTML5中,geolocation作为navigator的一个属性出现,它本身是一个对象,拥有三个方法: - getCurr ...
- Win7 + ubuntu14.04 双系统
安装主要分为以下几步:一. 下载Ubuntu 14.04镜像软件:二. 制作U盘启动盘:三. 安装Ubuntu系统:四. 用EasyBCD 创建启动系统. 1. 下载 Ubuntu 14.04 直接到 ...
- 在Main中定义student的结构体,进行年龄从大到小依次排序录入学生信息。(结构体的用法以及冒泡排序)
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- mongo操作
详细使用网址:http://blog.csdn.net/xinghebuluo/article/details/7050811 MongoDB基本使用 成功启动MongoDB后,再打开一个命令行窗口输 ...
- --hdu 1231 最大连续子序列(动态规划)
AC code: #include<stdio.h> int a[100005]; int main(void) { int n,i; int sum,maxn,tem,s,e,flag; ...
- C# 反射创建对象,包括创建引用外部程序集类的实例
#region 根据对象名成创建对象 /// <summary> /// 根据对象名成创建对象 /// </summary> /// <param name=" ...
- 运用加密技术保护Java源代码/定制ClassLoader
为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码 ...
- 转 Xenserver HVM is required for this operation的解决办法
今天在XenServer中安装虚拟机时出现如下错误: 原因:没有开启XenServer服务器主机的虚拟化支持功能 解决办法:在XenServer主机的BIOS里开启CPU的虚拟化支持功能 本文出自 “ ...
- POJ 1276 Cash Machine
Cash Machine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24213 Accepted: 8476 Descrip ...
- 生成唯一编号(序列号)--sql存储过程
CREATE procedure [dbo].[P_Sys_GetSerialNo] --取业务序列号 @SeqType int, --序列号类别,4位数,如:10+2+1 即1021 , --要取的 ...