当前位置: 首页 > news >正文

【PTA题目解答】7-4 数气球 (20分)

1.题目

天空上有n个气球,第i个气球的颜色为colori​(为全由小写字母组成的字符串)
请你数出每种颜色的气球的数量,并按照颜色出现的先后顺序进行排序输出。

输入格式:

测试数据有T组(1≤T≤100)。
对于每组样例,第一行一个整数n (1≤n≤1×105)表示气球个数。
接下来接下来n行,每行一个仅有小写字母构成的字符串colori​ (1≤∣colori​∣≤50),代表气球的颜色。

输出格式:

对于每个样例,一种颜色的气球统计结果一行,先输出颜色,用空格隔开后输出该种颜色的气球的数量。

输入样例:

在这里给出一组输入。例如:

2
3
red
red
blue
4
ovo
vvv
ov
ovo

输出样例:

在这里给出相应的输出。例如:

red 2
blue 1
ovo 2
vvv 1
ov 1

代码:

#include <iostream>
#include <map>
#include <utility>
#include <vector>
using namespace std;

int n,T;
typedef pair<string, int> PII;

void print(vector<PII> & v)
{
    for(auto &p : v)
    {
        cout << p.first << " " << p.second << '\n';
    }
}

int Find(vector<PII> &v, string s)
{
    for(int i = 0; i < v.size(); ++i)
    {
        if (v[i].first == s) return i;
    }
    return -1;
}

int main()
{
    cin >> T;
    while(T--)
    {
        int n; cin >> n;

        vector<PII> v;
        for(int i = 0; i < n; ++i)
        {
            string s; cin >> s;
            int k = Find(v, s);
            if (k != -1) v[k].second++;
            else v.push_back({s, 1});     
        }
        print(v);
    }
    return 0;
}

扩展(根据value值进行排序)

#include <iostream>
#include <map>
#include <utility>    // pair
#include <algorithm>  // sort 
#include <vector>
using namespace std;

int n, T;
typedef pair<string, int> PII;

void print(vector<PII>& v)
{
    for (auto& p : v)
    {
        cout << p.first << " " << p.second << '\n';
    }
}

struct cmp_by_value {
    bool operator()(const PII &p1, const PII &p2)
    {
        return p1.second > p2.second;
    }
};

int main()
{
    cin >> T;
    while (T--)
    {
        int n; cin >> n;
        map<string, int> mp;
        for(int i = 0; i < n; ++i)
        {
            string s; cin >> s;
            mp[s]++;
        }

        //把map中元素转存到vector中
        vector<PII> v(mp.begin(), mp.end());
        sort(v.begin(), v.end(), cmp_by_value());
        print(v);
    }
    return 0;
}

相关文章:

  • 清明祭祖(原创)
  • C++Primer学习(7.1 定义抽象数据类型)
  • 助力字体管理,规避设计卡顿的得力工具
  • 详解SQL数据定义功能
  • C++【类和对象】(结束篇)
  • 游戏引擎学习第160天
  • GHCTF web方向题解
  • Next.js项目MindAI教程 - 第七章:社区功能实现
  • 73.HarmonyOS NEXT PicturePreviewImage组件深度剖析:高级功能扩展与性能优化策略(三)
  • 多条件下的免杀webshell
  • 虚拟化数据恢复—重装系统服务器崩了的数据恢复过程
  • Spring Boot对接twilio发送邮件信息
  • 我的博客素材
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(45)血海轮回阵 - Floyd-Warshall 多源最短路径
  • 02-Canvas-fabric.ActiveSelection
  • Rabit
  • Uniapp 开发 App 端上架用户隐私协议实现指南
  • Vuetify v-data-table footer文本适配中文
  • Redis基本命令手册——五大类型
  • 便捷搞定计算机名、IP 与 Mac 地址修改及网卡问题的软件
  • 光明网评论员:手机“二次放号”,需要重新确认“你是你”
  • 柳州警方通报临牌车撞倒行人:扣留涉事车辆,行人无生命危险
  • 人社部:将会同更多部门分行业、分领域制定专项培训计划
  • “中国游”带火“中国购”,“即买即退”让外国游客购物更丝滑
  • 加拿大温哥华一车辆冲撞人群,造成多人伤亡
  • 从中央政治局会议看经济工作着力点:以高质量发展的确定性应对外部不确定性