组个最小数

it2022-05-05  128

总结

问题不难,简单介绍一下思路和注意的点。 首先是找到首位数字,从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;}//break;和count[i]--没有考虑到找到首位数字之后立马退出并减1 } if(i==10) min[j++]='0';//只有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; }

最新回复(0)