1.题目描述
2.题目分析
先将这些若干非0的数存放在一个数组b中,用sort()函数将其从小到大排好序,如果0的个数为0,直接输出b数组;否则将这些0依次插入最高位后面。
3.代码演示
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
bool cmp(int a,int b){
return a<b;
}
int main(){
int t,a[10],sum=0,k=-1;
for(int i=0;i<10;i++){
cin >> a[i];
sum += a[i];
}
int b[sum];
for(int j=1;j<10;j++){
while(a[j]!=0){
b[++k]=j;
a[j]--;
}
}
sort(b,b+k,cmp);//先将非0的整数从小到大排好顺序
while(a[0]!=0){
for(int j=k+1;j>=2;j--){//将0插入最高位的后面。
b[j] = b[j-1]; //除第一个元素外,所有元素后移一个长度
}
k++;
b[1]=0;
a[0]--;
}
for(int j=0;j<sum;j++) cout << b[j];
return 0;
}
由于水平有限,如有问题还请见谅,欢迎评论区留言。