求大神改代码。排序去重。
发布网友
发布时间:2023-10-16 14:41
我来回答
共1个回答
热心网友
时间:2023-10-21 13:24
一点点小问题 已修改
#include <stdio.h>
#include <stdlib.h>
#define N 100
int cmp1(const void* a, const void* b)
{
return *(int*)a - *(int*)b;
}
int cmp2(const void*a, const void* b)
{
return *(int*)b - *(int*)a;
}
int main()
{
char order;
char b;
int v[N], n=0, i,m,j;
scanf("%c",&order);
while(scanf("%d",&v[n]) == 1)n++;
if(order =='A') qsort(v,n,sizeof(int),cmp1);
if(order =='D') qsort(v,n,sizeof(int),cmp2);
// printf("%d ",v[0]);
for(i=0;i<n-1;)
{
if(v[i] ==v[i+1])
{
for(j=i+1;j<n-1;j++) {v[j] = v[j+1];}
n--;
}
else i++;
}
for(i=0;i<n-1;i++)
{printf("%d ",v[i]);}
printf("%d",v[i]);
return 0;
}
不懂可以追问
PS:算法上太复杂了 由于限定为1-1000的输入 所以可以建立一个map[1001]
然后每输入一个数字 就在对应位上标记为1
最后输入为1的数位即可 用空间换时间