蹲大佬,没有用字符串排序,29个测试数据过WA6个
查看原帖
蹲大佬,没有用字符串排序,29个测试数据过WA6个
915373
HuTao715楼主2022/12/23 13:15
#include<cstdio>
#include<math.h>
using namespace std;
unsigned int n;
unsigned long tmp;
unsigned long a[21];
bool compare(int,int);
int main()
{
   scanf("%d",&n);
   for(int i=1;i<=n;i++) scanf("%ld",&a[i]);
   for(int i=1;i<n;i++)
   {
   	for(int j=i+1;j<=n;j++)
   	{
   		if(a[i]>a[j]?compare(a[i],a[j]):!compare(a[j],a[i]))
   		{
   			tmp=a[i];
   			a[i]=a[j];
   			a[j]=tmp;
   		}
   	}
   }
   for(int i=1;i<=n;i++) printf("%ld",a[i]);
   printf("\n");
   return 0;
}
//比较大小,u>v
bool compare(int u,int v)
{
   int l1=floor(log10(u)),l2=floor(log10(v));
   int h1=0,h2=0,x,y;
   while(h1<=x)
   {
   	x=int(u/pow(10,l1-h1))%10;
   	y=int(v/pow(10,l2-h2))%10;
   	if(x>y) return false;
   	else if(x<y) return true;
   	else
   	{
   		h1++;
   		if(h2==l2) h2=0;
   		else h2++;
   	}
   }
}
2022/12/23 13:15
加载中...