75pts求助大佬帮看一下..改了很久,头大
查看原帖
75pts求助大佬帮看一下..改了很久,头大
408751
AgarthaSF楼主2021/2/26 18:54
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 30;
int n;
string q[N];
bool cmp(string a, string b)
{
	if(a[0] != b[0])	return a > b;  //如果数字首位不一样,直接取第一位较大的
	else
	{
		for (int i = 0; i <= a.size()-1 && i<=b.size()-1 ; i++)
		{
			if (a[i] != b[i]) return a[i] > b[i];   //如果首位一样,逐位比较,同位数字更大的数字排在前面组合出的数字更大
			if (i == a.size() - 1 || i == b.size() - 1) //如果查到了两数中一个数字的最后一位,比较较长的数字的后一位与首位数字的大小
			{
				if (a[i + 1]) return a[i + 1] > b[0];
				else return b[i + 1] > a[0];
			}
		}
	}
}
int main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> q[i];
	sort(q, q + n, cmp);
	for (int i = 0; i < n; i++)
		cout << q[i];
}
2021/2/26 18:54
加载中...