给定数字0-9各若?个。你可以以任意顺序排列这些数字,但必须全部使?。?标是使得最后得到的数尽可能?(注意0不能做?位)。例如:给定两个0,两个1,三个5,?个8,我们得到的最?的数就是10015558。现给定数字,请编写程序输出能够组成的最?的数。
输?格式:
每个输?包含1个测试?例。每个测试?例在??中给出10个?负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间??个空格分隔。10个数字的总个数不超过50,且?少拥有1个?0的数字。
输出格式:
在??中输出能够组成的最?的数。
输?样例:
2 2 0 0 0 3 0 0 1 0
输出样例:
10015558
已知0-9数字的个数,至少有一个非0数,求最小组合数,首位不可以是0
因为题目已知最少有一个非0数,所以全0的情况不需要特殊考虑
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char * argv[]) {
int k=0,ts[10]= {0};
for(int i=0; i<10; i++) {
scanf("%d",&ts[i]);
if(ts[i]>0&&i!=0&&k==0)k=i;
}
printf("%d",k);
ts[k]--;
for(int i=0; i<10; i++) {
for(int j=0; j<ts[i]; j++)printf("%d",i);
}
return 0;
}
PAT Basic 1023 组个最?数 (20) [贪?算法]
原文:https://www.cnblogs.com/houzm/p/12245575.html