九度OJ题目1041:Simple Sorting解题报告

来源:互联网 发布:淘宝开通购物号 编辑:程序博客网 时间:2024/06/05 16:41
题目1041:Simple Sorting

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:5352

解决:2047

题目描述:

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.

样例输入:
68 8 7 3 7 7
样例输出:
3 7 8
解题分析:在做该题的时候,由于排序函数的问题,一直Wrong Answer,看了别人的排序函数之后,才做正确;输出格式也需要注意。思路是每次输入一个数的时候,判断该数是否已经出现过,若没有,则保存到一个新数组中,若已经出现过,则忽略,继续判断下一个输入数值。
for(i=0;i<n;i++){
        flag=1;
        scanf("%d",&num[i]);
        temp=num[i];
  for(j=0;j<count;j++){
    if(b[j]==temp){
        flag=0;break;
    }
  }
  if(flag==1) b[count++]=temp;
     }
注意:
排序函数:
[cpp] view plain copy
  1. int cmp(const void *a, const void *b){  
  2.     return *(int *)a - *(int *)b;  
  3. }  
提交会Wrong网友解释
如果a=2147483647,b=-2;就会出现a-b>0,结果溢出了。所以使用return *(int *)a>*(int *)b?1:-1;就对了
测试数据:
2
2147483647 -2
源代码:
#include <stdio.h>
#include <math.h>
#define MAXNUM 10000
int cmp ( const void *a , const void *b){
 
        return *(int *)a >*(int *)b?1:-1;
}
 
int main(){
int n,num[1005],b[1005],flag;
int i,count,j,temp;
while(scanf("%d",&n)!=EOF){
 
    j=0,  count=0;flag=1;
     for(i=0;i<1005;i++)
        b[i]=-1;
     for(i=0;i<n;i++){
        flag=1;
        scanf("%d",&num[i]);
        temp=num[i];
  for(j=0;j<count;j++){
    if(b[j]==temp){
        flag=0;break;
    }
  }
  if(flag==1) b[count++]=temp;
     }
qsort(b,count,sizeof(b[0]),cmp);
for(i=0;i<count-1;i++)
    printf("%d ",b[i]);
 
 printf("%d\n",b[count-1]);
}
 
return 0;
}
 
/**************************************************************
    Problem: 1041
    User: kaoyandaren123
    Language: C
    Result: Accepted
    Time:0 ms
    Memory:912 kb
****************************************************************/
0 0