0
已解决
曹砚青
中级光能
中级光能
3811 最小的数字
题目描述 Description
给出若干0~9(包含0和9)之间的数字,怎样排序可以使它们组成的数字最小(首位不能是0)?
输入描述 Input Description
输入共有两行,第一行输入正整数n,表示共n个数字;
第二行输入n个0~9之间的整数,用空格隔开。
输出描述 Output Description
输出为一行,输出组成的最小数字。
样例输入 Sample Input
9 1 0 5 1 4 5 0 5 1
样例输出 Sample Output
100114555
数据范围及提示 Data Size & Hint
0<n<=50。
怎么实现使它们组成的数字最小(首位不能是0)
怎么将0跟除0以外最小的数交换???
0
已采纳
李显晨
中级启示者
中级启示者
为什么要交换++;
定义不用说,以下是输入:
for(int i=1;i<=n;i++){
cin>>a[i];
b[a[i]]++;//桶计数
}
以下是输出首位:
for(int i=1;i<=9;i++){//选最小的首位(不能是0)
if(b[i]!=0){
cout<<i;
b[i]--;//防止多出一个数
break;
}
}
以下是输出后面的部分:
for(int i=0;i<=9;i++){
for(int j=1;j<=b[i];j++){//不用去重
cout<<i;
}
}
0
0
0