代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[25],b[25],c[25],w[25],maxn=0,flag=1;
cin >> n;
for(int i = 1;i <= n;i++){
scanf("%d",&a[i]);
if(a[i]) flag=0;
c[i]=a[i];
b[i]=a[i];
int j=0;
while(c[i]){
c[i]/=10;j++;
}
w[i]=j;
maxn=max(maxn,j);
}
if(flag){//可删去,我以为有000
cout <<"0";
return 0;
}
for(int i = 1;i <= n;i++)//冒泡加权
for(int j = 1;j <= maxn-w[i];j++){
b[i]*=10;
b[i]+=4;//***
}
for(int i = 1;i <= n;i++){
for(int j = 1;j < n;j++){
if(b[j]<b[j+1]){
int tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
tmp=b[j];
b[j]=b[j+1];
b[j+1]=tmp;
}
}
}
for(int i = 1;i <= n;i++)
printf("%d",a[i]);
}
hack了一个数据过的,
理论上***的地方写的不太对,但还是氵过去了;
建议:加上
4
114 514 1919 1142
望采纳(不过其实加不加可能问题不大?感觉只有我这种算法会被卡hhh)