最小組合數字 貪心 排序

2021-07-04 18:11:49 字數 1001 閱讀 4298

a - 第一題

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

給乙個n位的正整數,該數不包含前導0,先讓你調整其中每個數字的位置,得到另乙個n位的數,並且使得這個數越小越好,而且這個數不能包含前導0。比如543210可以變成102345,而12345保持不變才是最優結果。

input

第一行乙個整數t(t<=100),表示有t組資料。

每組資料先輸入一行乙個整數n(1<=n<=100),表示位數,接下來一行輸入乙個n位的不包含前導0的正整數。

output

每組資料對應一行輸出,即調整數字位置後能得到的最小的不包含前導0的數。

sample input

3

6

543210

3123

3231

sample output

102345

123123

這道題看似複雜,實際用貪心考慮並不複雜,把一串數字重新組合成乙個數字,要求數字最小,那麼就肯定要小的數在前,大的數在後,這個只需要排下序就可以了,但是還不夠,因為乙個有效的數字,不能以 0 開頭,所以由貪心的思想,我們從最小的開始遍歷,找到不為 0 的數,然後和首位進行交換,得到的一定是最小的數,因為第一位肯定會被換掉,只能換個次小且不為 0 的數,然後處理完之後,輸出字串..... 

#include#include#includeusing namespace std;

int main()

tp=x[i];x[i]=x[0];x[0]=tp;//交換

} printf("%s\n",x);//輸出字串

} return 0;

}

最小的組合數字 自定義最小值函式,氣泡排序

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。class solution 氣泡排序,把較大的數不斷往後挪,沉到陣列的底部 for int i 0 i1 i string ans for i...

找數 求組合數字和

時間限制 0 sec 記憶體限制 128 mb 在n個數中找出其和為m的若干個數。先讀入正整數n 1 n 100 和m 1 m 10000 再讀入n個正數 可以有相同的數字,每個數字均在1000以內 在這n個數中找出若干個數,使它們的和是m,把滿足條件的數字組合都找出來以統計組合的個數,輸出組合的個...

組合數學 全錯位排序公式

problem description 大家常常感慨,要做好一件事情真的不容易,確實,失敗比成功容易多了!做好 一件 事情尚且不易,若想永遠成功而總從不失敗,那更是難上加難了,就像花錢總是比掙錢容易的道理一樣。話雖這樣說,我還是要告訴大家,要想失敗到一定程度也是不容易的。比如,我高中的時候,就有乙個...