根据题意给出0-9数字出现的次数,最多是50个,那么这个数字长度最长就是50,求组成的最小数字,那么需要把小的放前面,大的放后面,0不能放最前,那就从后面找到最小的数字,放在最前面,然后根据给出了多少个数字决定循环次数,从小到大依次放入数组输出。
#include<iostream>
using namespace std;
int main(){
int num[10];
int sum[50],minflag=0,w=0,j=0;
for(int i=0;i<10;i++){
cin>>num[i];
}
for(int i=1;i<10;i++){
if(num[i]>0){
w+=num[i];
if(minflag==0)
minflag=i;
}
}
w+=num[0];
sum[0]=minflag;
num[minflag]-=1;
for(int i=1;i<w;j++){
while(num[j]!=0){
sum[i++]=j;
num[j]--;
}
}
for(int i=0;i<w;i++){
cout<<sum[i];
}
return 0;
}