注意MAXSIZE大小,当x>100时,没有必要标记,存入数组时记得设置范围限制
#include<stdio.h>
#define MAXSIZE 110
int main()
{
int n,x,i,j,t;
int num[MAXSIZE],flag[MAXSIZE]={-1},sort[MAXSIZE],count=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&num[i]);
flag[num[i]]=1;
}
for(i=0;i<n;i++){
x=num[i];
while(x!=1){
if(x%2==0){
x=x/2;
if(x<100)
flag[x]=0;
}
else{
x=(x*3+1)/2;
if(x<100)
flag[x]=0;
}
}
}
for(i=0;i<MAXSIZE;i++){
if(flag[i]==1)
sort[count++]=i;
}
for(i=0;i<count;i++){
for(j=1;j<count;j++)
if(sort[j]>sort[j-1]){
t=sort[j];
sort[j]=sort[j-1];
sort[j-1]=t;
}
}
printf("%d",sort[0]);
for(i=1;i<count;i++)
printf(" %d",sort[i]);
return 0;
}