返回题解分享
讨论 / 题解分享/ 帖子详情

卡片(结果填空) - 题解

#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 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!