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

C++信息学奥赛1184:明明的随机数

在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
int main()
{int n;  // 数组长度cin >> n;  // 输入数组长度int arr[n];  // 定义整数数组,用于存储输入的整数// 输入数组元素for (int i = 0; i < n; i++){cin >> arr[i];}int e = 0;  // 计数器,记录重复元素个数// 去重for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (i != j && arr[i] == arr[j])  // 如果存在不同下标 i 和 j,且元素相等{arr[j] = 0;  // 将重复的元素置为 0if (arr[i] != 0){e++;  // 计数器加一}}}}// 升序排序for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (arr[i] < arr[j])  // 如果前一个元素小于后一个元素{swap(arr[i], arr[j]);  // 交换元素位置}}}cout << n - e << endl;  // 输出去重后数组的长度// 输出去重后的升序数组for (int i = 0; i < n; i++){if (arr[i] != 0)  // 输出非零元素{cout << arr[i] << " ";}}
}

代码逻辑如下:

  1. 输入一个整数 n,表示数组的长度。
  2. 创建一个名为 arr 的整数数组,用于存储输入的整数。
  3. 通过循环读取 n 个整数,将其存储到数组 arr 中。
  4. 使用两层循环遍历数组 arr,如果存在两个不同的下标 i 和 j 且 arr[i] == arr[j],则将 arr[j] 置为 0,并增加计数器 e 的值。
  5. 再次使用两层循环对数组 arr 进行冒泡排序,将较大的数向后移动。
  6. 输出去重后数组的长度 n - e。
  7. 遍历数组 arr,输出非零元素。
http://www.lryc.cn/news/150129.html

相关文章:

  • NoSQL技术——Redis
  • 【探索SpringCloud】服务发现-Nacos服务端数据结构和模型
  • 基于简单的信息变换实现自然语言模型
  • 低配版消息队列,redis——Stream
  • 【OpenCV入门】第五部分——图像运算
  • 【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)
  • 菜鸟教程第一天
  • 数据结构--5.2马踏棋盘算法(骑士周游问题)
  • 如何使用CSS实现一个响应式图片幻灯片(Responsive Image Slider)效果?
  • Linux学习之lvm删除
  • bazel介绍以及其发展历史
  • 固定资产管理分析怎么写?
  • 【项目源码】一套基于springboot+Uniapp框架开发的智慧医院3D人体导诊系统源码
  • 可能的二分法 -- 二分图判定【DFS、BFS分别实现】
  • 六级翻译备考
  • Vue框架--Vue中的数据绑定
  • Unity——热更新浅析
  • IMPLEMENT_DYNCREATE的分析
  • Java实现根据短连接获取1688商品详情数据,1688淘口令接口,1688API接口封装方法
  • ABAP FICO 凭证替代 凭证校验
  • 项目验收有哪些流程?
  • C++,类的继承
  • 作业33333333
  • Spring Cloud--从零开始搭建微服务基础环境【二】
  • 算法工程题(中序遍历)
  • jsch网页版ssh
  • 教程i.MX8MPlus开发板SPI转CAN操作
  • Docker中容器的随机命名方式
  • 大数据Flink实时计算技术
  • 数学中的自由与我们的生活