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

相关文章:

  • 用哈希表封装Myunordered_map和Myunordered_set
  • mac neo4j install verifcation
  • mac配置多版本jdk
  • Python 列表推导式与生成器表达式
  • 【成功经验分享】Github Education (Github学生认证)认证
  • 数据江湖的“三国演义”:数据仓库、数据湖与湖仓一体的全景对比
  • RAG vs 微调
  • 使用uni-app开发一个点餐收银台系统前端静态项目练习
  • C 语言第 10 天学习笔记:字符串基础操作与相关函数
  • 机器学习特征选择 explanation and illustration of ANOVA
  • java开闭原则 open-closed principle
  • 影刀RPA_初级课程_玩转影刀自动化_网页操作自动化
  • 【机器学习深度学习】NLP评价指标 BLEU 和 ROUGE
  • python优秀案例:基于python flask实现的小说文本数据分析与挖掘系统,包括K-means聚类算法和LDA主题分析
  • 用KNN实现手写数字识别:基于 OpenCV 和 scikit-learn 的实战教学 (超级超级超级简单)
  • Kafka——消费者组消费进度监控都怎么实现?
  • 牛客周赛101 D题 题解
  • 五、搭建springCloudAlibaba2021.1版本分布式微服务-gateway网关
  • 力扣热题100----------53最大子数组和
  • 零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
  • RAG(检索增强生成)
  • 探秘CommonJS:Node.js模块化核心解析
  • redis主从复制、哨兵机制底层原理
  • XML Schema 指示器:全面解析与深度应用
  • 齐护Ebook科技与艺术Steam教育套件 可图形化micropython Arduino编程ESP32纸电路手工
  • xgboost 机器学习在生物信息学中的应用
  • 【橘子分布式】gRPC(番外篇-客户端重试机制)
  • PostGIS面试题及详细答案120道之 (021-030 )
  • Java面试精进:测试、监控与序列化技术全解析
  • Netty中 ? extends Future<? super V>这种的写法的理解