采用matlab里面unique函数的算法,思路就是先排序,再求差分进行对比,以下是matlab unique函数的C++简化版,用到了标准库的一些东西:
#include <iostream>我试了,不对啊,还是有重复的,我是设了a[10]={1,2,3,3,2,2,1,2,2,3};结果是1 2 3 2...
追答int delnum(int a[])
{
int i=0,j=0,k=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])
{
for(k=j;k<n;k++)
{
a[k]=a[k+1];
}
n--;
j--;
}
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 1;
}
少了个j--,你试试
#include<iostream>
#define N 10
int zipdata(int *x,int n)
{ int i,j,nn,*p,same;
for ( i=1,nn=1;i<n;i++ )
{ same=0;
for ( j=0;j<nn;j++ ) if ( x[j]==x[i] ) { same =1; break; }
if ( !same ) { x[nn]=x[i]; nn++; }
}
return nn;
}
void main()
{
int x[N],n,i;
cin>>n; if ( n>N ) n=N;
for ( i=0;i<n;i++ ) cin>>x[i];
for ( i=0;i<n;i++ ) cout<<x[i]<<' '; cout<<endl;
n=zipdata(x,n);
for ( i=0;i<n;i++ ) cout<<x[i]<<' '; cout<<endl;
}