#include<iostream>
#include<string>
#include<cstring>
#include<math.h>
#include<algorithm>
using namespace std;
int n, a[25], b[25], len;
int length(int a)
{
int t = 0;
while (a != 0)
{
a /= 10;
t++;
}
return t;
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
b[i] = a[i];
if (length(a[i]) > len)len = length(a[i]);
}
for (int i = 1; i <= n; i++)
{
while (length(b[i]) != len)
{
b[i] *= 10;
}
}
for (int i = n-1; i>0; i--)
{
for (int j = 1; j <= i; j++)
{
if (b[j] < b[j + 1])
{
int temp1 = b[j], temp2 = a[j];
b[j] = b[j + 1];
b[j + 1] = temp1;
a[j] = a[j + 1];
a[j + 1] = temp2;
}
}
}
for (int i = 1; i <= n; i++)cout << a[i];
return 0;
}
我的思路是先把数据储存在数组a,b中,一开始两个数组相同,然后求出数据的最长长度,把b数组每个元素都变成这个长度,接下来冒泡排序,数组b元素交换位置的同时,数组a对应的元素交换位置,最后逐个输出数组a的元素。样例过了,但是最后一个测试点wa了,究竟错哪了?