【问题描述】
输入n个非0整型数据,将其中相同的数据删除只剩一个为止。要求:n由输入决定,n个数据存放在数组中。
【输入形式】
输入分三行,第一行n值,第二行n个数据,数据之间用一个空格分隔
【输出形式】
在一行上输出数据,数据之间有且只有一个空格。
【样例输入】
5
1 2 3 2 3
【样例输出】
1 2 3
该解法其实并没有将重复的数据删除,话不多说,上代码~~
#include<iostream>
using namespace std;
int main()
{
int arr[30]; //定义一个比较大的数组
int n;
cin>>n;
for(int i=0;i<n;i++) //输入n个数据存放在数组中
{
cin>>arr[i];
}
for(int i=1;i<n;i++) //从第二个元素开始逐个和前面比较
{
for(int j=i-1;j>=0;j--) //j初始为i-1,每次循环后减一
{
if(arr[i]==arr[j]) //若和前面数据有相同,则将其赋值为0
{
arr[i]=0;
}
}
}
for(int i=0;i<n;i++) //将数组中非0数据输出
{
if(arr[i]!=0)
cout<<arr[i]<<" ";
}
return 0;
}
此解法并没有将数组中的元素删除,只是将与前面重复的元素赋值为0,前提是用户输入的数据是非0整数