没用字符串 ,但写了个奇怪的函数来判断一个数的前p个位的数字(?)。主函数里先把输入的数字都存列表里,然后循环比较两个数字的前p位哪个大,大的排前面,最后遍历列表输出。刚学c++,不会优化啊qwq。
自己看吧(错了两个测试点,懒得改了)
#include <iostream>
#include <cmath>
using namespace std;
int h(int s,int p)
{
int x=1,f=s;
while(s>0)
{
s/=10;
x++;
}
return f/pow(10,x-p-1);
}
int main()
{
int n,a[100];
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=9;k++)
{
if(h(a[i],k)>h(a[j],k))
{
int b=a[i];
a[i]=a[j];
a[j]=b;
break;
}
}
}
}
if(a[1]==0)
{
cout<<"0";
return 0;
}
for(int i=1;i<=n;i++)
{
cout<<a[i];
}
}