• 九度oj 题目1041:Simple Sorting


    题目描述:

    You are given an unsorted array of integer numbers. Your task is to sort this array and kill possible duplicated elements occurring in it.

    输入:

    For each case, the first line of the input contains an integer number N representing the quantity of numbers in this array(1≤N≤1000). Next N lines contain N integer numbers(one number per each line) of the original array.

    输出:

    For each case ,outtput file should contain at most N numbers sorted in ascending order. Every number in the output file should occur only once.

    样例输入:
    6
    8 8 7 3 7 7
    样例输出:
    3 7 8

    一开始的代码居然没通过
     1 #include <cstdio>
     2 #include <algorithm>
     3  
     4 int n;
     5 int num[1002];
     6  
     7 int cmp(const void *a, const void *b) {
     8     int at = *(int*)a;
     9     int bt = *(int*)b;
    10     return at - bt;
    11 }
    12 int main(int argc, char const *argv[])
    13 {
    14     while(scanf("%d",&n) != EOF) {
    15         for(int i = 0; i < n; i++) {
    16             scanf("%d",&num[i]);
    17         }
    18         qsort(num, n, sizeof(int), cmp);
    19         printf("%d",num[0]);
    20         for(int i = 1; i < n; i++) {
    21             if(num[i] != num[i-1]) {
    22                 printf(" %d",num[i]);
    23             }
    24         }
    25         puts("");
    26     }
    27     return 0;
    28 }

    题目未告知数据范围,查了半天

    测试数据为

    2

    2147483647 -2

    就会失败

    修改代码如下

     1 #include <cstdio>
     2 #include <algorithm>
     3 
     4 int n;
     5 int num[1002];
     6 
     7 int cmp(const void *a, const void *b) {
     8     int at = *(int*)a;
     9     int bt = *(int*)b;
    10     return at > bt;
    11 }
    12 int main(int argc, char const *argv[])
    13 {
    14     while(scanf("%d",&n) != EOF) {
    15         for(int i = 0; i < n; i++) {
    16             scanf("%d",&num[i]);
    17         }
    18         qsort(num, n, sizeof(int), cmp);
    19         printf("%d",num[0]);
    20         for(int i = 1; i < n; i++) {
    21             if(num[i] != num[i-1]) {
    22                 printf(" %d",num[i]);
    23             }
    24         }
    25         puts("");
    26     }
    27     return 0;
    28 }

     虽然通过,但上面的写法其实不太标准,建议使用sort排序

  • 相关阅读:
    SpringBoot中mybatis配置自动转换驼峰标识没有生效
    mybatis-plus-扩展使用
    myabtis-plus使用
    mybatis-plus特性
    Mariadb Galera Cluster 故障快速拉起
    galera集群启动异常问题汇总
    Galera Cluster grastate.dat文件详解
    mongodb配置文件详解
    wsrep配置一览
    MySQL Galera cluster集群常用参数说明
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5808292.html
Copyright © 2020-2023  润新知