小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼 数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其 了。小蓝想知道自己能从 1 拼到多少。例如,当小蓝有 30 张卡片,其中 0 到 各 3 张,则小蓝可以拼出 1 到 10,但是拼 11 时卡片 1 已经只有一张了,不 出 11。现在小蓝手里有 0 到 9 的卡片各 2021 张,共 2021 张,请问小蓝可 从1 拼到多少?
学习c语言过程遇到的有趣问题,运用现在所学解决问题!!记录在csdn!!
#include<stdio.h>
int main(){
int a[11]; //定义一个数组存放数字出现次数
int num,x,i,teamp;
for(i=0;i<11;i++) { a[i]=0; } //数组赋值为0
for(num=1;;num++){
teamp=num;
while(teamp>0){
x=teamp%10; //x范围0--9 数组的下标即数字出行的次数 例如a[1]=10,即数字1出现的次数为10;
a[x]++;
teamp/=10;
}
for(i=0;i<11;i++){
if(a[i]>=2021) a[10]=1;
}
if(a[10]==1) break; //a[10]为循环停止条件 所以定义的数组为a[11]
}
printf("可以拼到%d",num);
return 0;
}
初学c语法方法可能有很多漏洞欢迎指教QAQ