当前位置: 首页 > 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.lryc.cn/news/601406.html

相关文章:

  • Rust实战:高效开发技巧
  • 【Java实例】服务器IP一站式管理
  • Rust Web 全栈开发(十二):构建 WebAssembly 应用
  • day69—动态规划—爬楼梯(LeetCode-70)
  • LeetCode 923.多重三数之和
  • PMO如何赋能AI产品项目治理和价值交付︱商汤绝影PMO总监陈福龙
  • 0-1BFS(双端队列,洛谷P4667 [BalticOI 2011] Switch the Lamp On 电路维修 (Day1)题解)
  • 【C++】论如何封装红黑树模拟实现set和map
  • Java全栈面试实战:从JVM到AI的技术演进之路
  • JavaScript手录07-数组
  • LangChain实现RAG
  • JavaSE-String类
  • Rust赋能智能土木工程革新
  • 【奔跑吧!Linux 内核(第二版)】第5章:内核模块
  • 栈----4.每日温度
  • 2.qt调试日志输出
  • 多智能体系统设计:协作、竞争与涌现行为
  • Day4.AndroidAudio初始化
  • bash的特性-常用的通配符
  • bash的特性-命令和文件自动补全
  • C++ 多线程(一)
  • 第六章 JavaScript 互操(2).NET调用JS
  • ios UIAppearance 协议
  • 「iOS」————消息传递和消息转发
  • 携带参数的表单文件上传 axios, SpringBoot
  • 深度解读Go 变量指针
  • [每周一更]-(第152期):Go中的CAS(Compare-And-Swap)锁原理详解
  • iOS安全和逆向系列教程 第20篇:Objective-C运行时机制深度解析与Hook技术
  • 结合Golang语言说明对多线程编程以及 select/epoll等网络模型的使用
  • goland编写go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案