卡片(蓝桥杯第十二届省赛)(C/C++组)

#include <bits/stdc++.h>
using namespace std;

int a[10],b[10];
int cnt,cnt1,cnt2,p,i;
int main()
{
	for(i=0;i<=9;i++)
	{
		a[i]=2021;
	}
	for(i=1;i<99999;i++)
	{
		for(p=1;p<10;p++)
		{
			if(i<pow(10,p))
			{
				break;
			}
		}//确定数字位数 
		int temp=i;
		cnt=0;
		while(temp>0)
		{
			b[p-cnt-1]=temp%10;
			temp=temp/10;
			cnt++;
		}//把一个数字拆分到数组里 
		for(int j=0;j<cnt;j++)
		{
			if(b[j]==0) a[0]--;
			if(b[j]==1) a[1]--;
			if(b[j]==2) a[2]--;
			if(b[j]==3) a[3]--;
			if(b[j]==4) a[4]--;
			if(b[j]==5) a[5]--;
			if(b[j]==6) a[6]--;
			if(b[j]==7) a[7]--;
			if(b[j]==8) a[8]--;
			if(b[j]==9) a[9]--;
		}//某个数字出现一次,减少一张卡片 
		for(int j=0;j<=9;j++)
		{
			if(a[j]==0)
			{
				cnt1++;//卡片恰好用光,这个数能组成 
			}
			if(a[j]<0)
			{
				cnt2++;//卡片超出,这个数组不成 
				break;
			}
		}
		if(cnt1!=0||cnt2!=0)
		{
			break;
		}
	}
	if(cnt2!=0)
	{
		cout<<i-1;
	}
	else
	{
		cout<<i;
	}
	return 0;
}

把一个数分拆存到数组中:

http://t.csdn.cn/Xd1Sr

猜你喜欢

转载自blog.csdn.net/m0_71934846/article/details/128698085
今日推荐