第十二届蓝桥杯省赛填 空题B:卡片 c++万能的结构体

第十二届蓝桥杯省赛填 空题B:卡片 c++万能的结构体,第1张

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。



小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。



小蓝想知道自己能从 1 拼到多少。



例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,
但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。



现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1
拼到多少?
提示:建议使用计算机编程解决问题。


/*暴力枚举&&万能的结构体*/
#include
#include
using namespace std;
const long long int N=10000;
typedef struct Card{
	int num;
	int cnt;
}; 
int main(){
	
	Card number[10];
	
	for(int i=0;i<10;i++){
		number[i].num=i;  
		number[i].cnt=2021; 
	}
	
	for(long long int i=0;i<=N;i++){
		string s;int n=i;
		
		while(n>0){               //将i转化为字符i 
			s+=(char)((n%10)+48);
			n/=10;
		}if(i==0){                 //0特判 
			s=(char)48;
		} 
		
		
		for(int j=0;j<s.size();j++){     
			int isnum=(int)(s[j]-48);     //取出i的每个位置的数 
			if(number[isnum].cnt>0){      //从2021张减去 
				number[isnum].cnt--;
			}else{
				cout<<i;                 //2021张都用完,测不能拼出i; 
				return 0; 
			}
		}	
	}
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/567713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存