当前位置: 首页 > 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;
}

http://www.dtcms.com/a/70685.html

相关文章:

  • 清明祭祖(原创)
  • 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 地址修改及网卡问题的软件
  • 【Erdas实验教程】015:哨兵二号卫星数据简介及下载方法
  • 将pdf或者word转换成base64格式
  • 设计心得——多态
  • 沐数科技数据开发岗笔试题2025
  • Unity开发中对象池设计与使用
  • Ansible 自动化运维
  • Docker容器命令速查表
  • Leetcode 刷题笔记1 动态规划part11
  • ICLR2025 | SLMRec: 重新思考大语言模型在推荐系统中的价值
  • Linux系统之less命令的基本使用