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 <= ...
随机推荐
- mvc的验证
mvc的验证锦上添点花(2) 上一篇文章我们演示了通过对jquery.validate.unobtrusive.js做点小修改,如何给MVC的验证添点花 主要还是修改了onError与onSucces ...
- asp.net mvc框架的一些切入点
IhttpModule+配置文件,对请求进行进一步的整理.过滤与转发: global文件中以Application_xx的保护方法进行切入的方式,此方法等同于IHttpModule方法.IHttpMo ...
- 北京南天软件java工程师面试题
此试题为北京南天软件java工程师面试题(部分) 一.单项选择 (1)下列关于构造方法的叙述中,错误的是(C) A.java语言规定构造方法名与类名必须相同 B.java语言规定构造方法没有返回值,但 ...
- Web Api初试
Web Api初试 前言 ASP.NET Web API 与之前的内建HTTP服务解决方案的不同之处在于,它一开始就是围绕HTTP协议及其消息语义构建起来的.与WCF REST或ASP.NET AJA ...
- 该死的类型转换For input string: "[Ljava.lang.String;@1352dda"
今天又遇见了这个该死的问题,还是记下来备忘. 从map里取值的时候,将OBJECT对象 先转换成String 然后转换成integer报错 java.lang.NumberFormatExceptio ...
- 线程内唯一对象HttpContext
在asp.net中,HttpContext是主线程内唯一对象.在web应用中开启多线程,在另外一个线程中是无法访问HttpContext. 如果需要在另外一个线程中使用HttpContext.Curr ...
- Linux:用at和crontab调度作业
一.有2种作业调度方式 1.突发性的,就是只运行作业一次而不是定期运行,使用at命令. 例如在进程A运行一段时间后关闭该进程. 2.定期运行,就是每隔一定的周期运行一次,使用crontab命令. 如每 ...
- outlook gmail setting
smtp.gmail.com pop.gmail.com SMTP服务器端口 465 要求安全连接打钩 POP3服务器端口 995 要求安全连接打钩
- 保护模式特权级别DPL,RPL,CPL 之间的联系和区别
RPL是段选择子里面的bit 0和bit 1位组合所得的值,但这里要首先搞清楚什么是段选择子,根据Intel 的文件(IA-32 IntelR Architecture Software Develo ...
- mysql 数据库 简单存储过程游标使用
BEGIN #Routine body goes here... DECLARE no_more_record INT DEFAULT 0; DECLARE TEST_ID INT(20); DECL ...
