m记录剩下没被删除的数的数量:
int m=n;
soft排序a[1]~a[n]:
sort(a+1,a+n+1);
as表示要参照的数:
int as=1;
清空:
a[i]=0;
减去数的数量:
m--;
和下一个对比:
as++;
否则重新计数:
else{
as=1;
}
操作——删减数:
for(int i=2;i<=n;i++){
if(a[i]==a[i-as]){
a[i]=0;//清空
m--;//减去数的数量
as++;//和下一个对比
}else{
as=1;//否则重新计数
}
}
源代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[101];
cin>>n;
int m=n;//m记录剩下没被删除的数的数量
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);//soft排序a[1]~a[n]
int as=1;//as表示要参照的数
for(int i=2;i<=n;i++){
if(a[i]==a[i-as]){
a[i]=0;//清空
m--;//减去数的数量
as++;//和下一个对比
}else{
as=1;//否则重新计数
}
}//操作——删减数
cout<<m<<endl;
cout<<a[1];
for(int i=2;i<=n;i++){
if(a[i]!=0){
cout<<" "<<a[i];
}
}
return 0;
}