字符串、散列--P1598 垂直柱状图
题目描述
写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过100个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。
输入输出格式
输入格式:
四行字符,由大写字母组成,每行不超过100个字符
输出格式:
由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。
输入输出样例
思路
首先统计所有字符出现的次数,可以使用数组散列法或者直接使用map是实现,其次如何输出是本题的关键,方法是取得最高词频,作为输出控制台的高度,高度依次递减输出相应字符,如果词频小于高度输出空个否则输出*。(解题的过程中,发现set不可排序,无法使用sort())
AC1 数组散列+vector记录输出字符串
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
string instr;
int nums[26] = {0};
for (int i = 0; i < 4; ++i) {
getline(cin, instr);
for (int j = 0; j < instr.size(); ++j) {
//字符转数字
int temp = instr[j] - 'A';
//统计次数
if (temp < 26 && temp > -1)nums[temp]++;
}
}
//求取最大值
int max = 0 ;
for (int k = 0; k < 26; ++k) {
if (nums[k]>max)max = nums[k];
}
vector<string> outstr;
//生成输出的数组
for (;max>0;max--) {
for (int i = 0; i < 26; ++i) {
if (nums[i] >= max){
outstr.push_back("*");
if (i!=25)outstr.push_back(" ");
}
else{
outstr.push_back(" ");
if (i!=25)outstr.push_back(" ");
}
}
outstr.push_back("\n");
}
//输出
for (vector<string>::iterator iter =outstr.begin();iter!=outstr.end();++iter) {
cout<<*iter;
}
char charpter ='A';
for (int l = 0; l < 26; ++l) {
cout<<charpter++;
if(l!=25)cout<<" ";
}
return 0;
}
AC2
#include <iostream>
#include <string>
#include <algorithm>
#include <map>
#include <vector>
using namespace std;
int main() {
string instr;
map<char, int> ma;
for (int i = 0; i < 4; ++i) {
getline(cin, instr);
for (int j = 0; j < instr.size(); ++j) {
int temp = instr[j] - 'A';
//如果使用[]目前不属于map一部分的索引操作符访问某个键,则会自动为您添加一个键
if (temp > -1 && temp < 26)ma[instr[j]]++;
}
}
//取最高层
int max = 0;
for( map<char, int>::iterator x = ma.begin();x!=ma.end();x++)
if((*x).second>max)
max = (*x).second;
vector<string> outstr;
//生成输出的数组
for (;max>0;max--) {
for (int i = 0; i < 26; ++i) {
if (ma[i+'A'] >= max){
outstr.push_back("*");
if (i!=25)outstr.push_back(" ");
}
else{
outstr.push_back(" ");
if (i!=25)outstr.push_back(" ");
}
}
outstr.push_back("\n");
}
//输出
for (vector<string>::iterator iter =outstr.begin();iter!=outstr.end();++iter) {
cout<<*iter;
}
for ( map<char, int>::iterator iter=ma.begin();iter!=ma.end();iter++)
cout << (*iter).first << " ";
return 0;
}
学到的点
1 geline()可以用于输入多行字符串,\n是他的默认结束符,一段结束其指针会跳转至结束符后所以可以输入多行字符串
字符串、散列--P1598 垂直柱状图的更多相关文章
- 洛谷 P1598 垂直柱状图【字符串+模拟】
P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. ...
- 洛谷—— P1598 垂直柱状图
P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. ...
- 洛谷 P1598 垂直柱状图
P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. ...
- 洛谷 P1598 垂直柱状图【字符串】
题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. 输入输出格式 输入格式 ...
- (水题)洛谷 - P1598 - 垂直柱状图
https://www.luogu.org/problemnew/show/P1598 忘记读取后清空数组,也不知道准确的长度. #include<bits/stdc++.h> using ...
- 洛谷——P1598 垂直柱状图
https://www.luogu.org/problem/show?pid=1598 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字 ...
- Java实现 洛谷 P1598 垂直柱状图
题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过100个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. 输入格式 四行字符, ...
- 洛谷P1598 垂直柱状图
模拟题...我自己一直被光标下去上不去怎么模拟困扰,实际上可以直接从高到低,从左到右模拟 我的代码(算法借鉴题解) #include <bits/stdc++.h> using names ...
- P1598 垂直柱状图
输入格式: 四行字符,由大写字母组成,每行不超过100个字符 输出格式: 由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的.在任何一行末尾不要打印不需要的多余空格.不要打印任何空行 ...
随机推荐
- [疑问] C# 多线程程序,如果在并行程序块中开空间会远远慢于将空间开在并行块之外
// int[,] label = new int[m, n]; Parallel.For(, thread_num, (n) => { ]; i++) { int[] tmp = new in ...
- 查看mysql数据库的所有配置信息和服务器的各种状态
查看MySQL服务器配置信息 mysql> show variables; 2, 查看MySQL服务器运行的各种状态值 mysql> show global status;
- C#面向过程项目之飞行棋
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 飞行棋V ...
- P3174 [HAOI2009]毛毛虫(树形dp)
P3174 [HAOI2009]毛毛虫 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边 ...
- P1606 [USACO07FEB]荷叶塘Lilypad Pond(最短路计数)
P1606 [USACO07FEB]荷叶塘Lilypad Pond 题目描述 FJ has installed a beautiful pond for his cows' aesthetic enj ...
- hdu 模拟 贪心 4550
卡片游戏 Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Su ...
- java dom4j xml生成,解析
1. 用Java代码生成xml文档 package com.test.dom; import java.io.FileOutputStream; import java.io.IOException; ...
- daily_journal_3 the game of thrones
昨晚追完了最爱的美剧(the game of thrones),哇,看到结局有点崩溃.果然还是美帝淫民开放,各种乱伦,在七夕收到的万点暴击就祝天下有情人就像剧中一样终是血亲. 昨天算是完成了git的复 ...
- Spring抽象JDBC,使用JdbcTemplate
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 转】 mysql5.6.12 for Linux安装
原博文出自于: http://blog.csdn.net/book_mmicky/article/details/25714049 感谢! 1:上www.mysql.org下载64位版本mysql5. ...