程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU1106:排序

HDU1106:排序

編輯:C++入門知識

Problem Description 輸入一行數字,如果我們把這行數字中的‘5’都看成空格,那麼就得到一行用空格分割的若干非負整數(可能有些整數以‘0’開頭,這些頭部的‘0’應該被忽略掉,除非這個整數就是由若干個‘0’組成的,這時這個整數就是0)。   你的任務是:對這些分割得到的整數,依從小到大的順序排序輸出。       Input 輸入包含多組測試用例,每組輸入數據只有一行數字(數字之間沒有空格),這行數字的長度不大於1000。     輸入數據保證:分割得到的非負整數不會大於100000000;輸入數據不可能全由‘5’組成。     Output 對於每個測試用例,輸出分割得到的整數排序的結果,相鄰的兩個整數之間用一個空格分開,每組輸出占一行。     Sample Input 0051231232050775     Sample Output 0 77 12312320         [cpp]   //快排與atoi函數的運用   #include <iostream>   #include <cstdio>   #include <cstring>   #include <stdlib.h>   using namespace std;      char str[10005],p[10005];   int num[10005];      int cmp(const void *a,const void *b)   {       return (*(int*)a - *(int*)b);   }      int main()   {       while(gets(str))       {           int j = 0,k = 0,i,len;           len = strlen(str);           str[len] = '5';           str[++len] = '\0';           for(i = 0;i<len;i++)           {               if(str[i] != '5')               p[j++] = str[i];               else if(str[i-1]!='5' && i>0)// 對於是5的位置還需要檢查前一個字符是不是5,如果前一個字符已經是5,則表明這是多余的5。               {                   p[j] = '\0';                   num[k++] = atoi(p);                   j = 0;               }           }           qsort(num,k,sizeof(int),cmp);           for(i = 0;i<k-1;i++)           cout << num[i] << " ";           cout << num[i] << endl;       }          return 0;   }      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved