Openjudge-NOI题库-垂直直方图
题目描述 Description
四行字符,由大写字母组成,每行不超过72个字符
输出格式:
由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。
输入样例:
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
输出样例:
*
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
思路:这题难度一般,但是写起来较为复杂
①先用一个数组ans统计每个字母出现的次数
②将字符串数组kk里的字符全部变为"$"(这样可以避免偶然性)
③按照每个字母出现的次数将"*"存入数组(要隔开一行来存,所以我的数组开到了52而不是26)我的思路如下图所示:
④从后往前按整列输出不为"$"的字符(这里我用了一个小技巧:记录字母出现最多的次数,用max记录下来从后往前扫时只用以max为起点即可,这样可以减少很多循环) 代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
int n,i,j,l,q=;//i,j循环经常用的,l也是用来循环26次的
l=;
char a[],b[],c[],d[];
char kk[][];
int ans[];//记录每个字母出现的次数
int max=;//出现次数最多的字母出现的次数
/*========================*///清零工作开始
for(i=;i<;i++)//归零
{
ans[i]=;
}
for(i=;i<;i++)//二维字符串数组清零(全部变为$)
{
for(j=;j<;j++)
{
kk[i][j]='$';
}
}
/*========================*///输入四行句子
gets(a);
gets(b);
gets(c);
gets(d);
/*========================*///统计字母出现的次数
for(i=;i<strlen(a);i++)
{
if(a[i]>='A'&&a[i]<='Z')
{
ans[a[i]-]++;
}
}
for(i=;i<strlen(b);i++)
{
if(b[i]>='A'&&b[i]<='Z')
{
ans[b[i]-]++;
}
}
for(i=;i<strlen(c);i++)
{
if(c[i]>='A'&&c[i]<='Z')
{
ans[c[i]-]++;
}
}
for(i=;i<strlen(d);i++)
{
if(d[i]>='A'&&d[i]<='Z')
{
ans[d[i]-]++;
}
}
for(i=;i<;i++)//找出出现次数最多的字母出现的次数,待会儿会用到
{
if(ans[i]>max) max=ans[i];
}
/*========================*///开始存入"*"
j=;
while(l>)//循环26次
{
for(i=;i<ans[q];i++)//按照ans数组中的个数来存入*
{
kk[j][i]='*';
}
j=j+;
l--;
q++;
}
/*========================*///开始输出
for(i=max-;i>-;i--)
{
for(j=;j<;j++)
{
if(kk[j][i]!='$')
{
printf("%c",kk[j][i]);
}
else
{
printf(" ");
}
}
printf("\n");
}
printf("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n");
return ;
}
Openjudge-NOI题库-垂直直方图的更多相关文章
- NOI题库刷题日志 (贪心篇题解)
这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点( ...
- NOI题库 1768最大子矩阵 题解
NOI题库 1768最大子矩阵 题解 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...
- NOI题库 09:图像旋转翻转变换
NOI题库开始的题,也是略水,当然也是大水,所以彼此彼此 09:图像旋转翻转变换 总时间限制: 1000ms 内存限制: 65536kB 描述 给定m行n列的图像各像素点灰度值,对其依次进行一系列操作 ...
- NOI题库-小学奥赛QwQ
今天Loli教育我们让我们来看看NOI题库的奥赛部分,不过,为何是小学的( ⊙ o ⊙ )啊!感觉智商被各种侮辱. 余数相同问题: 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为 ...
- noi题库(noi.openjudge.cn) 1.7编程基础之字符串T31——T35
T31 字符串P型编码 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串122344111可被描述为"1个1.2个 ...
- noi题库(noi.openjudge.cn) 1.5编程基础之循环控制T36——T45
T36 计算多项式的值 描述 假定多项式的形式为xn+xn-1+-+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值. 输入 输入仅一行,包括x和n,用单个空格隔开.x在flo ...
- noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30
T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替 ...
- noi题库(noi.openjudge.cn) 1.9编程基础之顺序查找T06——T15
T06 笨小猴 描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词 ...
- noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T11——T20
T11 图像旋转 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数.1 <= n <= 100,1 <= ...
随机推荐
- jQuery获取动态生成的元素
需求描述:页面上可以动态添加数据,比如table,点击按钮可以动态添加行.又或页面 加载时table数据是通过ajax从后台获取的.而这时我们想要获取其中的某个值,又该如何获取呢? 如果是要通过某个事 ...
- java常用的环境变量配置
JDK配置 JAVA_HOME: C:\java\jdk1.7.0 CLASSPATH: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; PAT ...
- winform程序中为无边框窗体手动添加窗体拖动代码
Point oldMousePoint;//记录开始移动窗口前鼠标点下箭头的位置 Point oldFormPoint;//记录开始移动窗口前窗体位置 // ...
- OC-变量和数据类型
对象的初始化 Fraction *myFract=[[Fraction alloc] init];//初始化对象 [myFract setTo:1 over:3];//设置初始值 初始化对象和设置初始 ...
- ice 有道德的黑客!
ice 有道德的黑客! 在开始正文之前,请帮忙为当前 排名前 10 唯一的 .Net 开源软件 FineUI 投一票: 投票地址: https://code.csdn.net/2013OSSurve ...
- C#多线程,线程锁
]; ; i < ; i++) { threads[i]= ; i < ; i++) { R ...
- php memcached缓存集群
一.需求描述 一linode xen vps 1G RAM,40+sites,IO频繁,openfiles ulimit已65535 US时间访问量大增,nginx不定时502 二.解决办法 page ...
- 不想再做"鸟蛋"
至今为止学习C++两个学期了,有过迷茫,有过自信,有过崩溃,有过希望,有过伤心,有过高兴.这一路走来,C++虐我千百遍,我待C++如"初恋". ...
- [置顶] 遵循Java EE标准体系的开源GIS服务平台架构
传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.csd ...
- oralce 10g 官方认证的操作系统版本
oralce 10g 官方认证的操作系统版本 Operating system x86 Red Hat Enterprise Linux AS/ES 3 (Update 4 ...
