1, 2, 0, 2, -1, 999, 3, 999, 88
答案应该是:
1, 2, 0, -1, 999, 3, 88
int xiaoyuan_sort(int R[], int n) //消元函数定义
{
int i, j, k;
for (i = 0; i < n; i++) //循环整个数组
for (j = i + 1; j < n; j++) //滞后一个元素开始循环
if (R[j] == R[i]) //如果有重复元素
{
n--; //数组大小减1
for (k = j; k < n; k++)
R[k] = R[k + 1]; //从重复元素开始,元素依次向前移动一个位置
j--;
}
return n;
}
另一个用分段哈希
#include <iostream>
using namespace std;
const int v2=11;
const int v1=10;
bool Index[v2][v1][v1];
void Unique( int *list, int len ){ //¶ÔÕûÐÍÊý×éÊÊÓÃ
int i, j, col, line, temp;
bool exsit;
for( i=0; i<len; ++i ){
j=0;
exsit=true;
temp=list[i];
col=temp>0;
line=temp%v1;
while( j<v2 ){
if( Index[j][col][line]==false ){
exsit=false;
Index[j][col][line]=true;
}
temp/=v1;
col=line;
line=temp%v1;
++j;
}
if( exsit==false )
cout<<list[i]<<" ";
}
}
int main( ){
int list[]={1, 2, 0, 2, -1, 999, 3, 999, 88};
int len=sizeof(list)/sizeof(list[0]);
Unique( list, len );
cout<<endl;
return 0;
}
#include <iostream>
using namespace std;
const int v2=11;
const int v1=10;
bool Index[v2][v1][v1];
void Unique( int *list, int len ){ //¶ÔÕûÐÍÊý×éÊÊÓÃ
int i, j, col, line, temp;
bool exsit;
for( i=0; i<len; ++i ){
j=0;
exsit=true;
temp=list[i];
col=temp>0;
line=temp%v1;
while( j<v2 ){
if( Index[j][col][line]==false ){
exsit=false;
Index[j][col][line]=true;
}
temp/=v1;
col=line;
line=temp%v1;
++j;
}
if( exsit==false )
cout<<list[i]<<" ";
}
}
int main( ){
int list[]={1, 2, 0, 2, -1, 999, 3, 999, 88};
int len=sizeof(list)/sizeof(list[0]);
Unique( list, len );
cout<<endl;
return 0;
}









