#include<bits/stdc++.h>
using namespace std;
int a[10];//桶的思想,储存0~9卡片的数量
int main()
{
a[0] = 2020;//因为0不会进入第一次记录,数量减一
for(int i = 1;i <= 9; ++ i)a[i] = 2021;//给0~9的数卡片加上数量
int i = 0,rec = 0,bre = 0;//i为可到达数字,rec为桶中元素的记录,bre为结束状态
//让i不断增加,记录它每个位上的元素,减少桶中对应的卡片数量
while(bre != 1)
{
cout << i << '\n';//输出i当前值
int j = i;//用j记录i值
while(j > 0)//取出i每一位,从桶中删除卡片次数
{
rec = j % 10;//取最后一位
a[rec] --;
j = j / 10;//去掉最后一位
}
i ++;//可组成的数字增加
//不必要,但是可以查看桶中元素(卡片)当前数量
for(int i = 0;i <= 9; ++ i)cout << a[i] << ' ';
cout << '\n';
//一旦桶中有卡片数量不够,激活终止标记
for(int j = 0;j <= 9; ++ j){//判断桶中是否有空元素
if(a[j] <= 0){
bre = 1;//终止标记状态变化
}
}
}
return 0;
}
0 回复
0 转发
1 喜欢
4 阅读



