news 2026/5/31 0:57:49

挑选苹果pta

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
挑选苹果pta

借鉴jinzun2000大佬的思路

我做出了一些注释和优化

重点

1动态数组存储class Apple类

2map匹配篮子号和苹果id

果园采摘了n个苹果,分别放在若干个篮筐中。现给出n个苹果所在篮筐的情况,请找出每个篮筐中重量最重的苹果。定义一个苹果类Apple,有编号(id)、重量(weight)、直径(diameter)成员变量。

输入格式:

首先输入一个整型数n(1<=n<=999999),表示n个苹果。
紧跟着n行输入,每一行格式为:篮筐号,苹果编号(id),重量(weight),直径(diameter)。
篮筐号为整数,取值区间为[1,999999],id为字符串,weight、diameter为正整数。

输出格式:

按篮筐号从小到大排序,输出每个篮筐中重量最重的苹果信息。题目保证每个篮筐中只有一个重量最重的苹果。

输入样例

7 1 N000001 175 77 2 N000002 180 83 2 N000003 160 66 1 N000004 160 63 1 N000005 165 68 4 N000006 183 85 2 N000007 170 74

输出样例

1 N000001 175 77 2 N000002 180 83 4 N000006 183 85
#include <bits/stdc++.h> using namespace std; class Apple { public: Apple(string id, int w, int d) { //创建赋值 a_id = id; weight = w; diameter = d; } void print_fun();//输出 //定义 string a_id; int weight, diameter; }; int re_Apple(int n, string s, vector<Apple> *A) { // 通过苹果id,找苹果在vector中的位置 for (int i = 0; i < n; i++) {//遍历vector if (s == ((*A)[i].a_id)) { return i; } } return -1;//没找到 } void Apple::print_fun() { cout << this->a_id << " "; cout << this->weight << " "; cout << this->diameter << endl; } int main() { int N; cin >> N; vector <Apple> v; map<int, string> Map;//[框子号,苹果id] for (int i = 1; i <= N; i++) { string id; int w, d, basket; cin >> basket >> id >> w >> d; v.push_back(Apple(id, w, d)); if (Map.find(basket) == Map.end()) {//没找到 Map[basket] = id;//若basket不存在,则创建 } else { //baseket 已存在 if (w > v[re_Apple(v.size(), Map[basket], &v)].weight)//当前苹果和篮子中现存最大苹果相比较 Map[basket] = id; } } for (auto &e : Map) { cout << e.first << " "; v[re_Apple(N, e.second, &v)].print_fun(); } return 0; }

看过一个vector<int> basket (999999+1)的代码

int re_Apple(int n, string s, vector<Apple> *A) { // 通过苹果id,找苹果在vector中的位置
for (int i = 0; i < n; i++) {//遍历vector
if (s == ((*A)[i].a_id)) {
return i;
}
}
return -1;//没找到
}

这一段功能函数优化了很多,负责通过苹果的id Map[basket](e.second)来找寻这个苹果

在vector中存储的位置,省空间省力

if (w > v[re_Apple(v.size(),Map[basket], &v)].weight)//当前苹果和篮子中现存最大苹果相比较

这个思路是不是让人眼前一亮呢

psmap.find()找寻key值 (键值升序哦

若想找value

则1for (auto it = myMap.begin(); it != myMap.end(); ++it) {
if (it->second == target_value) {
cout << "找到value='" << target_value << "',对应的key=" << it->first << endl;
break;
}
}

2auto it = find_if(起始迭代器, 结束迭代器, 条件函数);

#include <algorithm>

bool isApple(const pair<int, string>& element) {
return element.second == "apple";
}

// 使用
auto it = find_if(myMap.begin(), myMap.end(), isApple);

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 2:00:33

SecondScreen:解锁Android多屏扩展的终极方案

SecondScreen&#xff1a;解锁Android多屏扩展的终极方案 【免费下载链接】SecondScreen Better screen mirroring for Android devices 项目地址: https://gitcode.com/gh_mirrors/se/SecondScreen SecondScreen是一款专为Android设备外接显示器场景设计的革命性工具&a…

作者头像 李华
网站建设 2026/5/28 15:57:33

macOS虚拟机终极指南:普通电脑快速安装苹果系统全攻略

macOS虚拟机终极指南&#xff1a;普通电脑快速安装苹果系统全攻略 【免费下载链接】unlocker VMware macOS utilities 项目地址: https://gitcode.com/gh_mirrors/unl/unlocker 还在为没有苹果电脑而烦恼吗&#xff1f;想在自己的Windows或Linux电脑上体验macOS系统的流…

作者头像 李华
网站建设 2026/5/30 20:20:13

Perlego电子书下载完整教程:轻松实现离线阅读

Perlego电子书下载完整教程&#xff1a;轻松实现离线阅读 【免费下载链接】perlego-downloader Download books from Perlego.com in PDF format 项目地址: https://gitcode.com/gh_mirrors/pe/perlego-downloader 还在为在线阅读电子书而烦恼吗&#xff1f;Perlego下载…

作者头像 李华
网站建设 2026/5/30 20:24:32

21、深入探索Eclipse 4应用的样式定制与主题管理

深入探索Eclipse 4应用的样式定制与主题管理 1. 使用CSS属性定制时钟小部件样式 在当前的实现中, ClockWidget 中指针的颜色是在构造函数中设置的,创建后便无法更改。若能使用CSS从外部控制小部件的样式,那将是更好的选择。可以通过 org.eclipse.e4.ui.css.swt 插件中…

作者头像 李华
网站建设 2026/5/30 22:13:48

25、自动化构建与测试:SWTBot与Tycho的应用

自动化构建与测试:SWTBot与Tycho的应用 1. SWTBot相关知识与测试问题 在软件开发中,自动化测试是确保软件质量的关键环节。SWTBot在这方面发挥着重要作用,下面是一些关于SWTBot的常见问题: | 问题编号 | 问题描述 | | ---- | ---- | | Q1 | SWTBot所需的JUnit测试运行…

作者头像 李华
网站建设 2026/5/30 21:14:11

34、Elasticsearch 分片与副本管理全解析

Elasticsearch 分片与副本管理全解析 在 Elasticsearch 的使用过程中,分片和副本的管理是至关重要的,它直接影响到集群的性能、可用性和数据分布。下面将详细介绍 Elasticsearch 中关于分片和副本管理的多个关键方面。 1. 每个节点的分片和副本数量 除了指定分片和副本的分…

作者头像 李华