zoukankan      html  css  js  c++  java
  • 九度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排序

  • 相关阅读:
    dbcp2连接池获取数据库连接Connection
    ItelliJ基于Gradle创建及发布Web项目(三)
    freeswitch编译java esl
    Java程序(非web)slf4j整合Log4j2
    日期常用操作类DateUtil
    关于静态库
    Activity的setContentView的流程
    ProGuard详解
    remoteViews简介
    WMS—启动过程
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5808292.html
Copyright © 2011-2022 走看看