22考研西安交大915编程题

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
C++ 代码
#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-

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值