題目描述:數組
給定數字 0-9 各若干個。你能夠以任意順序排列這些數字,但必須所有使用。目標是使得最後獲得的數儘量小(注意 0 不能作首位)。例如:給定兩個 0,兩個 1,三個 5,一個 8,咱們獲得的最小的數就是 10015558。 現給定數字,請編寫程序輸出可以組成的最小的數。 輸入格式: 輸入在一行中給出 10 個非負整數,順序表示咱們擁有數字 0、數字 一、……數字 9 的個數。整數間用一個空格分隔。10 個數字的總個數不超過 50,且至少擁有 1 個非 0 的數字。 輸出格式: 在一行中輸出可以組成的最小的數。 輸入樣例: 2 2 0 0 0 3 0 0 1 0 輸出樣例: 10015558
本人AC代碼:spa
// PAT_1023_Min_Number # include <stdio.h> int main(void) { int i, j, k=0; int N[10]; int New[50]; int len = 0; for (i=0; i<10; i++) { scanf("%d",&N[i]); len += N[i]; } // 輸入數據 for (i=0; i<10; i++) { for (j=0; j<N[i]; j++) { New[k++] = i; } } // 調整格式 if (New[0] == 0) { for (i=1; i<len; i++) { if (New[i] != 0) { New[0] = New[i]; New[i] = 0; break; } } } // 輸出數組 for (i=0; i<len; i++) { printf("%d",New[i]); } return 0; }
RRRblog