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

信息学奥赛c++语言:整数去重

题目描述

给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。

输入

输入包含两行:第一行包含一个正整数n(1 ≤ n ≤ 20000),表示第二行序列中数字的个数;第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于0、小于等于5000。

输出

输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。

样例输入 
5
10 12 93 12 75
样例输出 
10 12 93 75

代码 

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,a[20005];
	cin>>n;
	for(int i=0;i<n;i++)    // 循环 n 次,依次读取 n 个整数,并将它们存储到数组 a 中
	{
		cin>>a[i];
	}
	for(int i=0;i<n;i++)    // 外层循环,遍历数组中的每个元素
	{
		for(int k=i+1;k<n;k++)    // 中层循环,从外层元素的下一个位置开始,查找与外层元素相同的元素
		{
			if(a[i]==a[k])     // 判断当前元素 a[k] 是否与外层元素 a[i] 相同
			{
				for(int c=k;c<n;c++)    // 若相同,通过内层循环将后续元素依次前移覆盖重复元素
				{
					a[c]=a[c+1];
				}
				k--;    // 由于元素前移,k 减 1,以便下次继续检查当前位置
				n--;    // 数组长度减 1
			}
		}
	}
	for(int i=0;i<n;i++)    // 循环输出去重后的数组元素
	{
		cout<<a[i]<<" ";
	}
	return 0;
}

 

相关文章:

  • 3-001:MySQL 中的回表是什么?
  • 中国软件供应链安全技术指南|DevSecOps敏捷安全技术金字塔V3.0正式发布
  • MQ消息发送不在MySQL事务中,该如何保证一致性?
  • 蓝桥 2109统计子矩阵
  • Ubuntu22.04安装数据
  • 5.1 程序调试
  • 什么是双机热备系统?双机热备现在是否已经过时了?
  • 职坐标C语言数据结构算法核心精讲
  • Deep research深度研究:ChatGPT/ Gemini/ Perplexity/ Grok哪家最强?(实测对比分析)
  • 内容中台的实施基石是什么?
  • vue2双向绑定解析
  • 单片机设计暖脚器研究
  • 投资晚报 3.12
  • 【论文笔记】FLARE:feed-forward+posegeometry estimate+GS
  • 调优案例一:堆空间扩容提升吞吐量实战记录
  • 适合二次开发的Web组态软件推荐
  • 子母钟系统,京准电子科技助力高考精准计时
  • 机器学习常见激活函数
  • Vitis IDE 艰难切换--从传统 Vitis GUI 到 2024.1 统一软件界面
  • NetAssist 5.0.14网络助手基础使用及自动应答使用方案
  • 桥,在黄岩与上海之间|劳动者的书信③
  • 五一假期多地政府食堂对外开放:部分机关食堂饭菜“秒没”
  • 韩国前国务总理韩德洙正式宣布参加总统选举
  • 韩国法院将重审李在明案,韩德洙入局能否为大选带来变数?
  • 国台办:民进党当局所谓“对等尊严”,就是企图改变两岸同属一中
  • 癌症来临前,可能伪装成这几种常见病,千万别大意