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排序

  • 相关阅读:
    Laravel框架中的event事件操作
    PHP魔术方法实例
    PHP 面向对象
    ThinkPHP中where()使用方法详解
    PHP常见错误提示含义解释
    php面向对象编程self和static的区别
    php文件路径获取文件名
    php三种无限分类
    php高精度计算问题
    转:JavaScript定时机制、以及浏览器渲染机制 浅谈
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5808292.html
Copyright © 2011-2022 走看看