Description
现有一个非减序排序的一维数组,其中有若干元素是重复的。编程将重复元素删除掉若干个,仅保留1个,使数组中没有重复元素。
Input
输入有多行。第一行M>0,表示之后有M行输入。
之后的M行输入是若干个一维数组。每行的第一个数据0<N<=1000,表示该数组有N个整数。其后是按照非减序排好的N个整数,每个元素均在int类型的表示范围之内。每行的所有数据两两之间用一个空格隔开。
Output
输出有M行,每行输出与上述M组输入一一对应,是其输入数组去重后的结果。输出的数据需按照递增序排列,且每两个数组元素之间用一个空格隔开。
#include <stdio.h>
#include <stdlib.h>
void PX(int a[],int m)
{
int i,j,p,t;
for(i=0;i<m-1;i++)
{
p=i;
for(j=i+1;j<m;j++)
{
if(a[j]<a[p])
p=j;
}
if(p!=i)
{
t=a[p];
a[p]=a[i];
a[i]=t;
}
}
}
int main()
{
int i,m,n,a,b,c[1000],j;
scanf("%d",&m);
while(m--)
{
j=0;
scanf("%d%d",&n,&a);
b=a;
c[j]=a;
j++;
for(i=1;i<n;i++)
{
scanf("%d",&a);
if(a!=b)
{
c[j]=a;
j++;
b=a;
}
}
PX(c,j);
for(i=0;i<j;i++)
printf("%d ",c[i]);
}
return 0;
}
这篇博客介绍如何编程解决非减序数组去重问题。输入为多组非减序排序数组,要求删除重复元素,仅保留一个,并保持递增顺序。输出为去重后的数组,按照升序排列。
&spm=1001.2101.3001.5002&articleId=42779321&d=1&t=3&u=fd7d61357fda42d6a07dc4183eeeea79)
4693

被折叠的 条评论
为什么被折叠?



