#include <stdlib.h>
int main()
{
int n,i,j,t;
scanf("%d",&n);
int a[n+1];
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<n; i++)
{
for(j=0; j<n-i-1; j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
int bj=a[0]-1;
for(i=0;i<n;i++)
{
while(a[i]==a[i+1])
{
a[i+1]=bj;
i++;
}
}
int count=0;
for(i=0;i<n;i++)
{
if(a[i]!=bj)
{
count++;
}
}
printf("%d\n",count);
for(i=0;i<n;i++)
{
if(a[i]!=bj)
{
printf("%d ",a[i]);
}
}
return 0;
}
提供一组你错误的数据:
5
1 1 1 1 1
输出应该是1 1你输出是3 1 1 1
问题应该出在判断上,但是没有细看。
不过你可以尝试使用桶排,一种通过使用空间来降低时间复杂度的排序算法
my code
#include<cstdio>
using namespace std;
bool a[1000 + 10];
int main(){
____int n;scanf("%d",&n);
____int t,cnt=0;
____while(n--){
________scanf("%d",&t);
________if( !a[t] ){
____________a[t] = true;
____________cnt++;
________}
____}
____printf("%d\n",cnt);
____for(int i=1;i<=1011;i++){
________if( a[i] ) printf("%d ",i);
____}
}
using namespace std;
bool a[1000 + 10];
int main(){
int n;scanf("%d",&n);
int t,cnt=0;
while(n--){
scanf("%d",&t);
if( !a[t] ){
a[t] = true;
cnt++;
}
}
printf("%d\n",cnt);
for(int i=1;i<=1011;i++){
if( a[i] ) printf("%d ",i);
}
}
WOC,这**毁缩进