設有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...