当前位置: 首页 > news >正文

C++算法竞赛篇(六)一维数组题型讲解

C++算法竞赛篇(六)一维数组题型讲解

  • 前言
  • C++ 一维数组题型讲解
    • 第一题 查找特定的值
    • 第二题 向量点积计算
    • 第三题 年龄与疾病
    • 第四题 小鱼比可爱


前言

  • 前面的题型里我们认识了C++循环嵌套题型
  • 本篇博客我们开始讲解一维数组题型讲解

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的C++算法竞赛篇文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13001405.html?spm=1001.2014.3001.5482


C++ 一维数组题型讲解

第一题 查找特定的值

题目链接 https://www.luogu.com.cn/problem/B2093

在这里插入图片描述
解题思路

  1. 输入处理

    • 先读取整数 n(数组长度),再通过循环读取 n 个整数存入数组 arr
    • 最后读取目标值 x(需要查找的数)。
  2. 遍历查找逻辑

    • for 循环遍历数组 arr(索引 i0n-1)。
    • 若找到 arr[i] == x立即输出当前索引 ibreak(保证找到第一个匹配项)。
  3. 未找到处理

    • 若循环结束后 i == n(遍历完数组仍无匹配),输出 -1
#include <iostream>
using namespace std;
const int N = 10010;
int arr[N];int main()
{int n;int x;cin >> n;for(int i = 0; i < n; i++){cin >> arr[i];}cin >> x;int i = 0;for(i = 0; i < n; i++){if(arr[i] == x){cout << i << endl;break;}}if(i == n)cout << -1 << endl;return 0;
}

在这里插入图片描述

第二题 向量点积计算

题目链接 https://www.luogu.com.cn/problem/B2091

在这里插入图片描述
解题思路

  1. 输入准备

    • 定义两个数组 ab(长度足够存储 n 个元素,代码中用 const int N = 1010 预定义)。
    • 读取 n 后,分别用循环读取 n 个整数存入 ab(代码中用 1-based 下标,更贴近数学习惯)。
  2. 点积计算逻辑

    • 点积公式:对应下标元素相乘后累加求和(即 sum += a[i] * b[i])。
    • for 循环遍历下标 i(从 1n),依次计算并累加乘积。
  3. 结果输出

    • 遍历结束后,输出 sum(即两个向量的点积结果)。
#include <iostream>
using namespace std;const int N = 1010;
int a[N];
int b[N];
int sum = 0;int main()
{int n = 0;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i];}for(int i = 1; i <= n; i++){cin >> b[i];}for(int i = 1; i <= n; i++){sum += a[i] * b[i];}cout << sum << endl;return 0;
}

在这里插入图片描述

第三题 年龄与疾病

题目链接 https://www.luogu.com.cn/problem/B2090

在这里插入图片描述
解题思路

  1. 分类统计逻辑

    • 定义 n1~n4 四个变量,分别统计 4 个年龄段 的人数(0-1819-3536-6061+)。
    • 读取总人数 n 后,循环 n 次读取年龄 age,通过 if-else 判断 age 所属区间,对应增加 n1~n4 的计数。
  2. 百分比计算

    • 每个区间的百分比公式:(n_i * 1.0 / n) * 100(用 1.0 转换为浮点数,避免整数除法丢失精度)。
  3. 格式化输出

    • printf("%.2f%%\n", ...) 输出,保留两位小数并显示百分号(%% 转义为单个 %)。
#include <iostream>
#include <cstdio>
using namespace std;int n1;
int n2;
int n3;
int n4;int main()
{int n;int age;cin >> n;// 统计for(int i = 0; i < n; i++){cin >> age;if(age >= 0 && age <= 18)n1++;else if(age >= 19 && age <= 35)n2++;else if(age >= 36 && age <= 60)n3++;elsen4++;}printf("%.2f%%\n", n1 * 1.0 / n * 100);printf("%.2f%%\n", n2 * 1.0 / n * 100);printf("%.2f%%\n", n3 * 1.0 / n * 100);printf("%.2f%%\n", n4 * 1.0 / n * 100);return 0;
}

在这里插入图片描述

第四题 小鱼比可爱

题目链接 https://www.luogu.com.cn/problem/P1428

在这里插入图片描述
解题思路

  1. 输入数组

    • 读取整数 n(小鱼数量),再读取 n 个整数存入数组 arr(记录每条小鱼的“可爱值”)。
  2. 双重循环统计逻辑

    • 外层循环:遍历每条小鱼(索引 i0n-1)。
    • 内层循环:遍历当前小鱼左边的所有小鱼(索引 j0i-1)。
    • arr[j] < arr[i](左边小鱼可爱值更小),则 count++(统计符合条件的数量)。
  3. 结果输出

    • 内层循环结束后,输出当前小鱼的 count,并用空格分隔。所有小鱼处理完后,输出换行符。
#include <iostream>
using namespace std;const int N = 110;
int arr[N];int main()
{int n = 0;cin >> n;for(int i = 0; i < n; i++){cin >> arr[i];}for(int i = 0; i < n; i++){int count = 0;for(int j = 0; j < i; j++){if(arr[j] < arr[i]){count++;}}cout << count << " ";}cout << endl;return 0;
}

在这里插入图片描述


以上就是这篇博客的全部内容,下一篇我们将继续探索C++算法的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的C++算法竞赛篇文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13001405.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

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

相关文章:

  • 【工具】python汇总发票(含源码)
  • Java排序算法之<希尔排序>
  • 7月27日星期日今日早报简报微语报早读
  • GitHub 趋势日报 (2025年07月25日)
  • Linux 系统网络配置及 IP 地址相关知识汇总
  • STM32 I2C通信完整教程:从协议原理到硬件实现
  • 一文快速了解Docker和命令详解
  • 模拟实现python的sklearn库中的Bunch类以及 load_iris 功能
  • 文件权限标记机制在知识安全共享中的应用实践
  • minio 对象存储
  • java的break能加标签,return可以加标签吗
  • 从一副蓝牙耳机里get倍思的“实用而美”
  • Python 程序设计讲义(23):循环结构——循环控制语句 break 与 continue
  • 背包DP之多重背包
  • 边缘提取算法结合深度学习的肺结节分割预测
  • 「日拱一码」040 机器学习-不同模型可解释方法
  • 【机器学习】第七章 特征工程
  • 【机器学习-3】 | 决策树与鸢尾花分类实践篇
  • 探索 Linux 调试利器:GDB 入门与实战指南
  • 在分布式的远程调用中proxy和stub角色区别
  • C++ 多线程 std::thread::get_id
  • 数独求解器与生成器(回溯算法实现)
  • Python|OpenCV-实现对颜色进行检测(22)
  • PandasAI连接LLM进行智能数据分析
  • qt常用控件-06
  • 【人工智能】【Python】各种评估指标,PR曲线,ROC曲线,过采样,欠采样(Scikit-Learn实践)
  • PAT 甲级题目讲解:1010《Radix》
  • Spring之【Bean的生命周期】
  • [AI8051U入门第十一步]W5500-服务端
  • Linux实战:从零搭建基于LNMP+NFS+DNS的WordPress博客系统