題目:輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數。列印能拼接處的所有數字鐘最小的乙個。例如輸入陣列,則列印出這3個數字能排成的最兇啊數字321323.
思路:1,傳統:陣列全排列,再排序
2,定義排序規則,將整數轉化成字元陣列,兩個字元陣列比較大小的比較函式要重新定義,(a+b)與(b+a)的大小確定先後順序。由小到大
最後依次輸出各個字元陣列。
struct compare
};
//函式功能 : 把陣列排成最小的數
//函式引數 : parray為陣列,num為陣列元素個數
//返回值 : 無
void comarraymin(int *parray, int num)
sort(pstrarray, pstrarray + num, compare()); //字串陣列排序
for(i = 0; i < num; i++) //列印字串陣列
cout<
面試題33 把陣列排成最小的數
問題描述 輸入乙個正整數陣列,將它們連線起來排成乙個數,輸出能排出的所有數字中最小的乙個。例如輸入陣列,則輸出這兩個能排成的最小數字32132。請給出解決問題的演算法,並證明該演算法。思路 先將整數陣列轉為字串陣列,然後字串陣列進行排序,最後依次輸出字串陣列即可。這裡注意的是字串的比較函式需要重新定...
面試題37 把陣列排成最小的數
題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。邊界條件及異常 陣列為空 思路 這題可以需要建立對任意兩個數自己的比較規則。然後根據這個規則進行排序即可。如果是單位數,顯然小的在前。如果是32和321,結合後有32321和32132兩種結果,比較這兩...
面試題 把陣列排成最小的數(C )
輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則打出這3個數字能排成的最小數字321323。這個題目最直接的做法應該是先求出這個陣列中所有數字的全排列,然後把每個排列拼起來,最後求出拼起來的數字的最大值,這裡不過多敘述。根據排列組合的知識,...