A - 和你在一起
时间限制:1秒 内存限制:128兆
题目描述:
我想和你在一起
直到我不爱你
宝贝 人和人 一场游戏
我愿意为你死去
如果我还爱你
宝贝 反正活着 也没意义
宝贝 我也只能 这样为你
——李志《和你在一起》
例如: n=3 时,3 个整数 13,312,343 联接成的最长时间为: 34331213。又如: n=4 时,4 个整数 7,13,4,246 联接成的最长时间为: 7424613。
输入:
第一行输入T,代表下面有T组数据。
n (1≤n≤20),表示 n 个数。
接下来一行 n 个正整数,大小不超过 104。
输出拼成的最长时间。
样例输入:
1
3
413 623 583
样例输出:
623583413
提示:
https://music.163.com/#/song?id=478491643
来源:NSWOJ
#include <cstdio>
int CMP(int a,int b)
{
int a1=a,b1=b,la=10,lb=10;
while(a/la)
{
la*=10;
}
while(b/lb)
{
lb*=10;
}
return (a*lb+b)-(b*la+a);
}
int main()
{
int x,i,j,n;
int d[20],t;
scanf("%d",&x);
while(x--){
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&d[i]);
}
for(j=0; j<n-1; j++)
for(i=0; i<n-1-j; i++)
{
if(CMP(d[i],d[i+1])<0)
{
t=d[i+1];
d[i+1]=d[i];
d[i]=t;
}
}
for(i=0; i<n; i++)
{
printf("%d",d[i]);
}
printf("\n");
}
return 0;
}//另附c++string代码
#include <bits/stdc++.h>
const int MAXN = 25;
using namespace std;
string str[MAXN];
bool cmp(string a, string b)
{
return a+b > b+a;//a+b就是b接在a的后面
}
int main()
{
int T;
cin >> T;
while(T--)
{
int n;
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;
}
}