P1012 拼數 字串

2022-05-01 17:03:06 字數 1695 閱讀 6206

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

例如:n=3n=3時,33個整數1313,312312,343343聯接成的最大整數為:3433121334331213

又如:n=4n=4時,44個整數77,1313,44,246246聯接成的最大整數為:74246137424613

輸入格式:

第一行,乙個正整數nn。

第二行,nn個正整數。

輸出格式:

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

輸入樣例#1: 複製

3

13 312 343

輸出樣例#1: 複製

34331213

字串交水的題

一開始cmp考慮了半天a了

#includeusing

namespace

std;

//input

#define rep(i,a,b) for(int i=(a);i<=(b);i++)

#define repp(i,a,b) for(int i=(a);i>=(b);i--)

#define ri(n) scanf("%d",&(n))

#define rii(n,m) scanf("%d%d",&n,&m);

#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)

#define rs(s) scanf("%s",s);

#define ll long long

#define inf 0x3f3f3f3f

#define rep(i,n) for(int i=0;i

#define clr(a,v) memset(a,v,sizeof a)

/////////////////////////////////

/bool cmp(string a,stringb)}

intmain()

view code

但是可以直接加起來進行比較

#includeusing

namespace

std;

//input

#define rep(i,a,b) for(int i=(a);i<=(b);i++)

#define repp(i,a,b) for(int i=(a);i>=(b);i--)

#define ri(n) scanf("%d",&(n))

#define rii(n,m) scanf("%d%d",&n,&m);

#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)

#define rs(s) scanf("%s",s);

#define ll long long

#define inf 0x3f3f3f3f

#define rep(i,n) for(int i=0;i

#define clr(a,v) memset(a,v,sizeof a)

/////////////////////////////////

/bool cmp(string a,string

b)int

main()

view code

真是智商是硬傷

洛谷P1012拼數 字串排序

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

字串處理洛谷P1012拼數

剛開始並沒有想到字串排序,想用整數一位一位比較,想了半天感覺太難了,然後想到了字串排序,寫完高興怎麼這麼簡單,結果一提交wa了乙個點,一看原來32,321的組合最大是32321,而字串排序的話321 32這就有問題了,於是修改了排序 include include include include i...

題解 P1012 拼數

想發布一道題解。其實這道題思路很簡單,主要是用字串 為什麼不用數字呢,因為字串是按ascii來一位一位比較大小更方便 來排序。主要注意有一點 有字尾 這裡後交換綴可能為任何數,但是只用判斷最後幾位。比如 789和78,肯定為78978,那麼是怎麼判斷的呢,相信大家都知道了,當前幾位數相同時,只用比較...