赞
踩
22年编程题共40分(15,15,10),其中第一题考察的是简单的输入输出和结构体排序,代码量略大;第二题考察的是一个比较简单的思维题,重在思考过程,代码量很小;第三题难度相比前两道要大一些,代码量一般,考察的是迭代法(二进制表示法)实现指数型子集枚举
or 递归实现指数型子集枚举
,
【915 全程班】火热报名中,915 常考但是王道没有的知识点一网打尽(含纸质版资料),且配套丰富练习题,425+高分学长在线答疑,请联系 v:yinuo0316-
有 N N N 支队伍参赛,每个队伍的无人机成绩为 S S S ,且每个无人机颜色被随机涂为蓝(b)、红(r)、绿(g)、紫(p)之一。
第一行包含整数
N
N
N,表示参加的队伍数目,即无人机数目。
接下来
N
N
N 行,每行包含每支参赛队伍的无人机颜色和打靶成绩
S
S
S ,由空格分隔开。
输出内容由两部分组成。
第一部分输出各种颜色对应的无人机数目。
第二部分根据按照成绩从大到小进行排序,输出无人机打靶成绩
S
S
S 和对应的无人机颜色。
1
<
=
N
<
=
30
1 <= N <= 30
1<=N<=30
0
<
=
S
<
=
100
0 <= S <= 100
0<=S<=100
5
b 80
p 95
b 85
g 90
r 90
blue 2
green 1
purple 1
red 1
95 purple
90 green
90 red
85 blue
80 blue
#include <iostream> #include <algorithm> #include <unordered_map> using namespace std; const int N = 35; struct Node { char c; int s; } q[N]; unordered_map<char, int> cnt; unordered_map<char, string> color{ {'g', "green"}, {'r', "red"}, {'b', "blue"}, {'p', "purple"} }; int main() { int n; cin >> n; for (int i = 0; i < n; i ++) { cin >> q[i].c >> q[i].s; cnt[q[i].c] ++; } for (auto t : cnt) cout << color[t.first] << ' ' << t.second << endl; cout << endl; for (int i = 0; i < n; i ++) for (int j = i + 1; j < n; j ++) if (q[i].s < q[j].s) swap(q[i], q[j]); for (int i = 0; i < n; i ++) cout << q[i].s << ' ' << color[q[i].c] << endl; return 0; }
第二题
第三题
第二题是原题,第三题稍加改动,求得每一个子集之后对子集求和看是否满足目标,满足就输出该子集,否则输出None
即可,思想都是一致的。
【特别提醒】 上课时老师说了,现在的IDE都很智能了,所以不会细扣你的语法错误,只要你的思路对了,就能拿到很多分。所以,如果在考场上类似这种第三题,你不会写代码的话,可以争取把算法的核心思想表述清楚,还是能拿不少分数的。可以参考参考力扣官方题解的解题思路,我觉得它的表述就挺清楚的,我就不重复写了,大家加油:)
【915 全程班】火热报名中,915 常考但是王道没有的知识点一网打尽(含纸质版资料),且配套丰富练习题,425+高分学长在线答疑,请联系 v:yinuo0316-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。