一、 问题描述
二、算法思想
初始化一个长度为10的数组count,用于记录卡片中每个数字的数量。
从1开始依次尝试拼出正整数,直到无法拼出下一个数为止。
对于每个尝试拼出的正整数,遍历其每一位的数字,检查该数字在count中是否还有剩余。如果有剩余,则将该数字的数量减1,并继续拼接下一位数字。
如果所有位数都成功拼接完毕,则说明可以拼出该正整数,将其保存起来,并继续尝试拼接下一个数。
当无法拼出下一个数时,返回保存的最大正整数。
三、代码实现
#include<stdio.h>
int main()
{int a[10],i,m,n,t;for(i=0;i<10;i++){a[i]=2021;}for(m=1;;m++){t=m;while(t!=0){n=t%10;t=t/10;switch(n){case 1:a[1]--;break;case 2:a[2]--;break;case 3:a[3]--;break;case 4:a[4]--;break;case 5:a[5]--;break;case 6:a[6]--;break;case 7:a[7]--;break;case 8:a[8]--;break;case 9:a[9]--;break;case 0:a[0]--;break;}if(a[n]==0)break;}if(a[n]==0)break;}printf("%d\n",m);
}
执行结果
结语
兴趣是最好的老师
毅力是远大的前程
!!!