题目描述
输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。
输入描述:
输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。
输出描述:
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。
示例1
输入
5
10 12 93 12 75
输出
10 12 93 75
#include<iostream>
using namespace std;
int main() {
int n;
int a[5001] = {0};
int b[5001] = {0};
int count = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 0; i < n;i++) {
int j;
for (j = 0; j < count;j++) {
if (a[j]==a[i]) {
break;
}
}if (j==count) {
b[j] = a[i];
count++;
}
}
for (int i = 0; i < count;i++) {
cout << b[i]<<" ";
}
return 0;
}
该题要求输入一个数表示数组长度并在第二行输入该长度的数组。要求将数组重复的元素删除。
思路:
1、输入数组长度和数组。
2、定义一个count用来保存已经找出不同元素的个数,定义新数组b[i]用来存储不重复的元素。
3、用i循环来遍历数组,在遍历数组中插入j循环,j的范围是从0到已经找出的元素个数(count),即将a[i]与之前找出的所有不同的元素作比较,若相等则跳出循环,不输出该位置的元素,若j==count,则在之前找出的元素里没有找到与a[i]相同的元素,此时将a[i]的值赋值给b[j]。
4、最后输出b[i]。
这题还行,不是太难。