【信息学奥赛一本通·编程启蒙 C++题解】3438:练76.2 精挑细选

信息学奥赛一本通-编程启蒙(C++版)在线评测系统
3438:练76.2 精挑细选


解题思路

  1. 数据存储:定义一个结构体来存储每根钢管的长度、直径和编码信息。通过循环读取输入数据,将每根钢管的信息存入结构体数组。
  2. 挑选规则应用
    • 初始化一个变量用于存储当前挑选出的钢管信息,首先假设第一根钢管为符合条件的钢管。
    • 遍历结构体数组,根据挑选规则依次比较每根钢管与当前挑选出的钢管。若遇到长度更长的钢管,则更新当前挑选的钢管为该钢管。
    • 若长度相同,比较直径,若直径更细,则更新当前挑选的钢管。
    • 若长度和直径都相同,比较编码,若编码更大,则更新当前挑选的钢管。
  3. 输出结果:遍历结束后,输出最终挑选出的钢管的编码。

C++代码实现

#include<bits/stdc++.h>
using namespace std;

// 定义钢管结构体
struct P {
    int l;
    int d;
    int c;
};

int main() {
    int n;
    cin >> n;
    P p[n];
    for (int i = 0; i < n; i++) {
        cin >> p[i].l >> p[i].d >> p[i].c;
    }
    P res = p[0];
    for (int i = 1; i < n; i++) {
        if (p[i].l > res.l) {
            res = p[i];
        } else if (p[i].l == res.l) {
            if (p[i].d < res.d) {
                res = p[i];
            } else if (p[i].d == res.d) {
                if (p[i].c > res.c) {
                    res = p[i];
                }
            }
        }
    }
    cout << res.c << endl;
    return 0;
}

代码解释

  1. 结构体 P:定义了一个结构体 P,用于存储钢管的长度 l、直径 d 和编码 c
  2. 主函数 main
    • 读取钢管数量 n
    • 创建结构体数组 p 来存储所有钢管的信息,通过循环读取每根钢管的长度、直径和编码。
    • 初始化 res 为数组中的第一根钢管,表示当前挑选出的钢管。
    • 通过循环遍历数组,从第二根钢管开始,根据挑选规则依次比较每根钢管与 res
      • 首先比较长度,如果当前钢管长度大于 res 的长度,则更新 res 为当前钢管。
      • 如果长度相同,比较直径,若当前钢管直径小于 res 的直径,则更新 res
      • 如果长度和直径都相同,比较编码,若当前钢管编码大于 res 的编码,则更新 res
    • 最后输出 res 的编码,即挑选出的钢管的编码。

知识总结

  1. 结构体的使用:学会使用结构体来整合相关的数据,方便对复杂数据的管理和操作。在本题中,通过结构体将钢管的不同属性整合在一起,便于后续按照规则进行挑选。
  2. 条件判断:通过多层嵌套的条件判断语句,实现了复杂的挑选规则。这要求对逻辑判断有清晰的理解,确保按照题目要求的优先级进行比较和选择。
  3. 数据遍历与比较:通过循环遍历数组中的每个元素,并与当前最优解进行比较,不断更新最优解。这种方法在解决需要从多个数据中挑选符合特定条件的数据的问题中非常常见。

测试数据

测试数据1:常规数据
测试数据2:边界值 - 最小钢管数量
测试数据3:边界值 - 最大钢管数量
测试数据4:所有钢管长度相同
测试数据5:所有钢管长度和直径都相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信奥大黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值