75分求助!
查看原帖
75分求助!
549907
Aheaddd楼主2021/8/28 16:18
#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了,究竟错哪了?

2021/8/28 16:18
加载中...