题目描述
设有 n 个正整数 a1,a2,a3.....an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。
输入格式
第一行有一个整数,表示数字个数 n。
第二行有 n 个整数,表示给出的 n 个整数 ai。
输出格式
一个正整数,表示最大的整数
解题思路:
分类讨论,注意
【6
321 32 407 135 13 217】
这种情况中“32”与“321”,“13”与“135”这两种情况
#include<bits/stdc++.h>
using namespace std;
#define MAX 1000006
char a[MAX][10],b[MAX][10];
typedef long long ll;
int main()
{
int n,u=0;
cin>>n;
for(int i=0; i<n; i++)cin>>a[i];
for(int i=0; i<n; i++)
{
int flag=i;
for(int j=0; j<n; j++)
{
int temp=0;
while(a[flag][temp]!='\0'||a[j][temp]!='\0')
{
if(a[flag][temp]=='\0'&&a[j][temp]!='\0'&&temp!=0&&a[j][temp]<a[flag][0])
{
break;
}
if(a[flag][temp]!='\0'&&a[j][temp]=='\0'&&temp!=0&&a[flag][temp]<a[j][0])
{
flag=j;
break;
}
if(a[flag][temp]>a[j][temp])
{
break;
}
if(a[j][temp]>a[flag][temp])
{
flag=j;
break;
}
temp++;
}
}
strcpy(b[u++],a[flag]);
a[flag][0]='\0';
}
for(int i=0; i<u; i++)cout<<b[i];
}
写在最后:
over!