总结
问题不难,简单介绍一下思路和注意的点。 首先是找到首位数字,从1开始遍历数组,找到个数不为0的那一位数后填入。注意这里找到后必须减少该1的count值,并break跳出循环。 如果首位数字1~9内都没有的话,该最小数就是0。这是特殊情况。 之后填充首位数字之后的数就行了,从小到大填充。
代码
#include <iostream>
using namespace std
;
int main()
{
int count
[10];
char min
[50];
int i
,j
=0;
for(int i
=0;i
<10;i
++)
{
cin
>>count
[i
];
}
for(i
=1;i
<10;i
++)
{
if(count
[i
]!=0)
{min
[j
++]=i
+'0';count
[i
]--;break;}
}
if(i
==10)
min
[j
++]='0';
else
{
for(int i
=0;i
<10;i
++)
{
for(int k
=0;k
<count
[i
];k
++)
{
min
[j
++]=i
+'0';
}
}
}
min
[j
]='\0';
cout
<<min
;
return 0;
}
转载请注明原文地址: https://win8.8miu.com/read-18584.html