最大數問題

韓小妹發表於2018-08-07

【問題描述】

設有n個正整數,將他們連線成一排,組成一個最大的多位整數.

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

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

【輸入】

第1行一個正整數L,代表測試資料的組數。

接下來L行,每行第一個是正整數N(1<=N<=6),該行接下來有N個正整數Mi(1<=Mi<=3000)

【輸出】

輸出L行,每組輸入資料輸出一行,輸出連線成的最大多位數

【樣例輸入】

2
13 312 343
4 7 13 4 246

【樣例輸出】

34331213
7424613

string為什麼可以定義一個字串

明確一下:你說的Charc++的內建型別char 你說的String是標準庫中定義的類麼 如果是的話,它兩的區別有: char陣列僅僅是儲存字串用的,c庫中有一系列操作字串的函式 String是類,它包含一個可變長度的char陣列,封裝了常用的字串操作函式它們之間可以轉化

AC碼:

#include <iostream> 
#include <cstring>
#include <algorithm>
using namespace std;
 
string str[10];

//按照前後位置不同取值大的排序,如 5和551 ,5551>5515 
bool cmp( string aa , string bb ){
	return aa+bb>bb+aa;
}

int main(){
	int t,n;
	cin >> t;
	while( t-- ){
		cin >> n;
		for( int i=0 ; i<n ; i++ )
			cin >> str[i] ;
		sort( str,str+n,cmp );
		for( int i=0 ; i<n ; i++ )
			cout << str[i];
		cout  << endl;
	}
}

 

相關文章