图表

题目描述

给你一个字符串,请统计各个字符出现的个数,并使用字符打印一幅统计图表。

图表的格式是

  1. x轴是字符,y轴是字符出现个数
  2. x轴的字符为字符串中出现过的字符,并按字典顺序排列
  3. y轴中的出现次数使用'*'表示。为了让图表不至于太长,一个'*'表示的数量要尽可能的大。
  4. 每行的行末不允许多余的空格。

输入

存在多个测试用例,处理到文件末尾。
每行一个只含英文大写字母的字符串,长度不超过1000。

输出

每行输出一个样例的结果,每个结果之后有一个空行。

样例输入

AABBCC
AAAABBBBCC
AABBBBDDDE

样例输出

***
ABC**
***
ABC***
***
****
ABDE

提示

第一个样例,ABC都是出现2次,所以我们可以用一个星号表示出现2次。
第二个样例的第一行坐标C的位置是行末,没有空格,是回车。ABC分别出现4,4,2次,所以使用一个星号表示出现2次
第三个样例没有C字符,所有没有C字符的统计信息。第1,2行的A字符位置是空格。

Source CodeProblem: 1326     User: 202205567311
Memory: 1192K       Time: 0MS
Language: G++     Result: Accepted
Source Code#include<stdio.h>
#include<string.h>
int count[2][26];
char map[32];
char ram[32];
char str[1005];
int gcd(int a, int b) {int t;if (a < b) {t = b;b = a;a = t;}while (a % b != 0) {t = a % b;a = b;b = t;}return b;
}
int main() {int len, i, j, cnt, flag, maxinum, mininum, gcdans;while (scanf("%s", str) != EOF) {len = strlen(str);memset(count, 0, sizeof count);cnt = 0;for ( i = 0; i < len; i++) {count[0][str[i] - 'A']++;}for ( i = 0; i < 26; i++) {if (count[0][i]) {map[cnt] = 'A' + i;count[1][cnt] = count[0][i];cnt++;}}map[cnt] = '\0';if (cnt > 1) {if (cnt == 2) {gcdans = gcd(count[1][0], count[1][1]);count[1][0]/=gcdans;count[1][1]/=gcdans;} else {gcdans = gcd(count[1][0], count[1][1]);for ( i = 2; i < cnt; i++) {gcdans = gcd(count[1][i], gcdans);}for( i=0;i<cnt;i++){count[1][i]/=gcdans;}}}else count[1][0]=1;maxinum = 0;for ( i = 0; i < cnt; i++) {maxinum = (count[1][i] > maxinum) ? count[1][i] : maxinum;}for ( i = maxinum; i >= 1; i--) {flag = -1;memset(ram, ' ', sizeof ram);for ( j = 0; j < cnt; j++) {if (count[1][j] >= i) {ram[j] = '*';flag = j;}}ram[flag + 1] = '\0';printf("%s\n", ram);}printf("%s\n\n", map);}
}

经过我的试验,打印字符串比打印单个字符快一些(貌似),经过我的稍稍优化,在15ms的洪流中成为0ms(doge)

xtu oj1326 Diagram 图表相关推荐

  1. 2大学英语四级关于计算机的图表作文,大学英语四级考试图表作文及范文.doc

    大学英语四级考试图表作文及范文 1.table(表)/graph(图表,曲线图)/diagram(图表)/chart(图表) Pie chart(饼状图)/bar graph(柱状图)/line gr ...

  2. 智课雅思词汇---十五、前缀co-com-con-col-cor-是什么意思

    智课雅思词汇---十五.前缀co-com-con-col-cor-是什么意思 一.总结 一句话总结:前缀:co- 表示"共同", 通常放在元音词根前 1.前缀co-com-con- ...

  3. 计算机常用英语单词对照

    第一部分.计算机算法常用术语中英对照 Data Structures 基本数据结构 Dictionaries 字典 Priority Queues 堆 Graph Data Structures 图 ...

  4. SQL/ORACLE_基础英语词汇

    英文 中文 英语 美语 abstract 抽象的 'æbstrækt 'æbstrækt access 访问:存取 'æksɛs 'ækses account 账户 ə'kaunt ə'kaunt a ...

  5. 英语单词常见词根总结

    ag,act 做,驱动 agent代理人 active活动的,积极的 agr 农田 agriculture农业 agrarian田地的 am 爱,亲爱 amicable友善的 amiable和蔼可亲的 ...

  6. 单词 2012-01-19

    mobilize [5mEubilaiz] v. 动员 mobilize mo.bi.lize AHD:[m½"b--lºz"] D.J.[6moub*7laiz] K.K.[6m ...

  7. 《D o C P》学习笔记(6 - 1)Word Games

    备注1:每个视频的英文字幕,都翻译成中文,太消耗时间了,为了加快学习进度,我将暂停这个工作,仅对英文字幕做少量注释. 备注2:将.flv视频文件与Subtitles文件夹中的.srt字幕文件放到同1个 ...

  8. vba返回excel中所有菜单命令栏CommandBar的名称

    命令栏对象为CommandBar. 在office中命令栏包含有菜单栏.工具栏. 由于excel 2007版本开始,微软用ribbon代替了原来常用的菜单栏.工具栏. 所以很多菜单栏.工具栏都已经不存 ...

  9. 计算机专业英语实战记录(整理了上千个相关单词)

    自上一篇<每次阅读外文技术资料都头疼,终于知道原因了>已过去多月,最近又在做简单的实践,实践方式很朴素,就是对照阅读React官方资料和国内翻译的资料,逐句对比,发现了许多问题,特在此记录 ...

最新文章

  1. 计算机在幼儿园美术区域的应用,让幼儿在美术区域活动中快乐成长!
  2. 《Linux内核设计与实现》读书笔记 第三章 进程管理
  3. SIEM部署的几条最佳实践
  4. 美酒节成就及任务攻略指引
  5. vuecli3修改html,详解vue-cli3多页应用改造
  6. 【强化学习】策略梯度Policy-Gradient
  7. 51 java_51javacms
  8. 流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较
  9. 如果reporting server出现“无法安装打印控件”的处理方法。
  10. P2387-[NOI2014]魔法森林【LCT】
  11. 交换机组最常见的8大故障及解决方法
  12. time是python的标准库吗_python3关于date和time的标准库
  13. 安装django库 指定2.0版本
  14. MySQL存储过程语句(if,while)的使用
  15. 数据结构与算法 —— 向量的扩容策略与分摊时间复杂度
  16. android只有域名打包封装成apk,一个Android Studio工程根据网址打包出不同的apk
  17. 2019.6.18 区块链论文翻译
  18. 孙正义:1万亿个物联网(IoT)器件正在加快人类进步
  19. 小宇java_小马哥的 Java 项目实战营
  20. 基于java的企业进销存管理系统

热门文章

  1. I 'd be the man-我定是主宰者
  2. 基于参考模型的主动悬架滑模控制(详细滑模控制推导)
  3. MongoDB原生脚本 - 检测order表LiveSource字段两侧包含空格的数据,并trim掉两端的空格*
  4. soj 4421 laobi与回文子串
  5. vue3新特性理论——纸上谈兵
  6. wireshark diameter协议解码问题
  7. uda1341声卡的linux 2.6.29版本内核驱动在arm s3c2440上的移植
  8. 【slq】查询所有机构中投诉最多的数据,对两个字段进行分组
  9. HDU6599 I Love Palindrome String(PAM)
  10. 零基础如何学习Web 安全,如何让普通人快速入门网络安全?