N個正整數連線成最大的數

2021-06-16 18:17:40 字數 626 閱讀 6971

題目:給出n個正整數,如 , 求將這些數連線起來所組成的最大的數,即959957711。

變形:給出n個由0...9組成的字串(開頭可能為零),求將這些字串連線起來,所組成的最大(最小)的數。

解:排序一下,然後拼接就ok了。重點在比較函式的實現上。

方法i:

比較函式在比較兩個數時,從高位到低位迴圈比較,如**所示。

方法ii:比較函式在比較兩個數a和b時,比較其拼接後的結果,即比較ab和ba,證明可見《劍指offer》。

**(含c++11特性):

#include #include #include #include using namespace std;

string maxnumber(vector&v));

string res;

for(const string &si : v)

return res;

}int maxnumber(vector&v)

int main();

vectorv(begin(arr), end(arr));

cout << maxnumber(v) << endl;

return 0;

}

輸入乙個正整數n,輸出n 的值。

輸入乙個正整數 n nn 輸出 n n n 的值。其中n 1 2 3 nn 1 2 3 cdots n n 1 2 3 n演算法描述 n n n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列 a aa 來表示乙個大整數 a aa a 0 a 0 a 0 表示 a a...

演算法 生成和為S的N個正整數

白話經典演算法系列之十三 隨機生成和為s的n個正整數 投影法 隨機生成和為s的n個正整數有很多種解法。下面講解一種比較高效且比較有趣味性的解法 投影法。以生成和為20的4個數為例,可以先生成隨機生成0到20之間的三個數字再排序,假設得到了4,7,18。然後在x y數軸上畫出這三個數,如下圖 然後將這...

C判斷乙個正整數n的d進製數是否是回文數

所有的有關於回文數的定義和如何判斷乙個n的d進製數是否是回文數的方法都在我的 注釋當中,直接上 include int circle int n,int d brief main 判斷正整數n的d進製表示是否是回文數 return int main void printf please enter ...