卡片
【问题描述】
小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1拼到多少?
提示:建议使用计算机编程解决问题。
思路解析:
1、用一个数组存放0-9数字卡片的数量
2、定义一个整型数从1开始累加
3、拆分整型数的各个位
4、依次减去用到的数字
5、直到有数字减到0
6、输出当前整型数的上一个数
#include <iostream>
using namespace std;
int main()
{
int card[10];
int num = 1;
int i,j;
//初始化卡片数组0-9各2021张
for (i = 0; i < 10; i++)
{
card[i] = 2021;
}
while (1)
{
j = num;
//按位拆分数字
while (j)
{
if (card[j % 10] == 0)//当有卡片数量为0时结束
{
cout << num - 1 << endl;
system("pause");
return 0;
}
card[j % 10]--;
j = j / 10;
}
num++;
}
system("pause");
return 0;
}
以上内容均为个人查阅资料学习总结所得,如有侵权,请联系删除,谢谢