文章目錄
- Problem Description
- Input
- Output
- Sample Input
- Sample Output
排序Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 49 Accepted Submission(s) : 17Font: Times New Roman | Verdana | GeorgiaFont Size: ← →Problem Description輸入一行數字,如果我們把這行數字中的‘5’都看成空格,那麼就得到一行用空格分割的若干非負整數(可能有些整數以‘0’開頭,這些頭部的‘0’應該被忽略掉,除非這個整數就是由若干個‘0’組成的,這時這個整數就是0)。
你的任務是:對這些分割得到的整數,依從小到大的順序排序輸出。
Input輸入包含多組測試案例,每組輸入資料只有一行數字(數字之間沒有空格),這行數位長度不大於1000。
輸入資料保證:分割得到的非負整數不會大於100000000;輸入資料不可能全由‘5’組成。Output對於每個測試案例,輸出分割得到的整數排序的結果,相鄰的兩個整數之間用一個空格分開,每組輸出佔一行。Sample Input
0051231232050775
Sample Output
0 77 12312320
經過和室友共同努力,終結正果。。。
import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.Scanner;public class abc {public static void main(String[] args) {Scanner cin = new Scanner(System.in);while(cin.hasNext()){ArrayList list =new ArrayList();String st =cin.next();String[] str=st.split("[5]");int p=0;int []arr=new int[str.length];for(int i=0;i<str.length;i++){if(!str[i].equals("")){list.add(Integer.valueOf(str[i]));}}Collections.sort(list);int i=0;for(;i<list.size();i++){System.out.print(i!=0?" "+list.get(i):list.get(i));}System.out.println();}}}
C代碼:
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char a[10000], b[100]; int i, j, t, len, temp, c[10000]; memset(a, 0, sizeof(a)); while(scanf("%s", a) != EOF) { getchar(); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); len = strlen(a); for(i=j=t=0; i<len; ++i) { if(a[i] == '5') { if(!i) continue; else if(j != 0) { c[t++]=atoi(b); memset(b, 0, sizeof(b)); j = 0; } } else b[j++]=a[i]; } if(a[i] != 5) { if(j != 0) { c[t++]=atoi(b); memset(b, 0, sizeof(b)); j = 0; } } for(i=1; i<t; ++i) { len = 0; for(j=0; j<t-i; ++j) { if(c[j]>c[j+1]) { len = 1; temp = c[j]; c[j] = c[j+1]; c[j+1] = temp; } } if(!len) break; } for(i=0; i<t; ++i) if(!i) printf("%d", c[i]); else printf(" %d", c[i]); printf("\n"); memset(a, 0, sizeof(a)); } return 0;}