洛谷P1012拼數 字串排序

2022-08-25 18:36:29 字數 842 閱讀 9622

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

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

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

輸入格式:

第一行,乙個正整數n。

第二行,n個正整數。

輸出格式:

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

the first glance i saw this problem,it』s so cushy;結果wa了乙個點;sad……;

仔細想想才發現問題所在,打個比方:4 和42 兩個字串的前一部分相同,而前半部分相同的字串,位數小的「<"位數大的,因此在比較中 4<42 ,於是按照我第一次的思路,把大的放在前面,於是得到了424,然而並不是這樣,而應該是442,這樣組合起來最大。

所以這時用sort對string陣列排序時需要手寫comp函式,

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

string num[22

];bool cmp(string a,string

b)int

main()

P1012 拼數 字串

設有nn個正整數 n 20 n 20 將它們聯接成一排,組成乙個最大的多位整數。例如 n 3n 3時,33個整數1313,312312,343343聯接成的最大整數為 3433121334331213 又如 n 4n 4時,44個整數77,1313,44,246246聯接成的最大整數為 742461...

字串處理洛谷P1012拼數

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

洛谷 P1012 拼數

大約有兩種方法 來處理 用字串來比較兩數字 solution 1 p1012 拼數 include include include include include define maxn 21 using namespace std int n,i string s maxn bool cmp st...