拼數(貪心 排序)

2021-10-09 01:40:58 字數 635 閱讀 1392

設有n個正整數(n ≤ 20),將它們聯接成一排,組成乙個最大的多位整數。

例如:n=3時,3個整數13,312,343聯接成的最大整數為:34331213

又如:n=4時,4個整數7,13,4,246聯接成的最大整數為:7424613

輸入描述:

第一行,乙個正整數n。

第二行,n個正整數。

輸出描述:

乙個正整數,表示最大的整數

示例1輸入

313 312 343

輸出34331213

首先想到按字典序降序排序,但由於字串比較的本身的缺陷並不能完全解決題目問題,列如321和32,如果按照字典序排序那麼拼接成的就是32132,然而結果卻沒有32321優秀。所以應當自定義排序函式,當a+b>b+a時a排在前面,否則b排在前面。

#include

#include

using

namespace std;

intcmp

(string a,string b)

intmain

(int argc,

char

*ar**)

貪心 字串 拼數

原題鏈結 不知道這是第幾次做這類題了 對於兩個數a和b,我們考慮微調 若a放在前面,則數字為 a b 這裡的 號表示將b連在a後面 若b放在前面,則數字為 b a 則只需比較a b與b a的大小關係即可 即可以判斷哪個數一定放在前面問題來了,怎樣實現呢,兩兩對比?我們發現string 剛好滿足我們需...

拼點遊戲 貪心

總時間限制 1000ms 記憶體限制 65536kb 描述c和s兩位同學一起玩拼點遊戲。有一堆白色卡牌和一堆藍色卡牌,每張卡牌上寫了乙個整數點數。c隨機抽取n張白色卡牌,s隨機抽取n張藍色卡牌,他們進行n回合拼點,每次兩人各出一張卡牌,點數大者獲得三顆巧克力,小者獲得一顆巧克力,如果點數相同,每人各...

NC16783 拼數(簡單排序)

題目描述 設有n個正整數 n 20 將它們聯接成一排,組成乙個最大的多位整數。例如 n 3時,3個整數13,312,343聯接成的最大整數為 34331213 又如 n 4時,4個整數7,13,4,246聯接成的最大整數為 7424613 輸入描述 第一行,乙個正整數n。第二行,n個正整數。輸出描述...