求大神改代码.排序去重.Description 有n个1到1000之间的整数(1≤n≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉.然后再按照指定的排序方式把这些数排序.Input 第1行为字母A或D,A

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 18:12:35
求大神改代码.排序去重.Description 有n个1到1000之间的整数(1≤n≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉.然后再按照指定的排序方式把这些数排序.Input 第1行为字母A或D,A

求大神改代码.排序去重.Description 有n个1到1000之间的整数(1≤n≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉.然后再按照指定的排序方式把这些数排序.Input 第1行为字母A或D,A
求大神改代码.排序去重.
Description
有n个1到1000之间的整数(1≤n≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉.然后再按照指定的排序方式把这些数排序.
Input
第1行为字母A或D,A表示按照升序排序,D表示按照降序排序.
第2行开始有若干个用一个空格或换行符分隔的正整数.
Output
相互之间用一个空格分隔的经去重和排序后的正整数.最后一个数后没有空格.
Sample Input
A
20 40 32 67 40 20
89 300 400 15
Sample Output
15 20 32 40
67 89 300 400
#include
#include
#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(1)
{
scanf("%d",&v[n++]);
scanf("%c",&b);
if(b == '\n') break;
}
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

求大神改代码.排序去重.Description 有n个1到1000之间的整数(1≤n≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉.然后再按照指定的排序方式把这些数排序.Input 第1行为字母A或D,A

一点点小问题 已修改

#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的数位即可 用空间换时间

求大神改代码.排序去重.Description 有n个1到1000之间的整数(1≤n≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉.然后再按照指定的排序方式把这些数排序.Input 第1行为字母A或D,A matlab大神,求解微分方程组代码求代码 重积分.求大神解答! matlab编程 随便输入三个数字,然后从小到大排序,求代码 地球 太阳 月亮 星星怎样排序求大神帮助 怎么去空间代码 外貌重不重要?求大神帮助 求大神解释下面这串代码的算法实现过程,和代码讲解代码很长,谁能帮我请留邮箱 为什么这样用matlab求矩阵的n次方不对呀?求改代码 造梦西游 求大神帮忙改等级~!改好加分~!求大神们了~! 求三角形面积的代码怎们编写大神们帮帮忙 求大神解释下VB代码意思,要答辩答的好必加分数! 求Vb代码 ,求这些数(12 38 45 51 22 15 83 74 98 26 99 30 66 09 72)的 选择降序和升序排序输出、冒泡升序和降序排序输出, 求C程序语言代码,假如有n个人,各人年龄不同,希望按年龄将他们从小到大排列(采用选择排序法). 闲人区怎么去求大神帮助 求不同工作表多条件求和公式表1 产品代码 库位 数量 表2 产品代码 库位 数量我只要在表1输入每天的货品即货物代码的进出库位和数量,而表2自动生成汇总,但表2货物代码是一定的排序,库位 天很冷改成比喻句怎么改求大神帮助 改卷老师喜欢什么样的作文求大神帮助