卡片-蓝桥杯

在这里插入图片描述
先分析一下问题,先创建一个数组用来存放0~9,放在全局变量默认为0,然后从0枚举到9将数组置为2021,意为2021张卡片。然后再写个函数判断卡片的条件得解。话不多说,上代码。

#include<iostream>

using namespace std;

int s[10];   //全局变量默认为0
bool check(int x)
{
    while(x)    //当x不为0时
    {
        int t= x%10;    //取出个位数
        x/=10;          // 再将个位数删掉
        if(--s[t]<0)     //如果这个数不够用
        {
            return false;
        }
    }
    return true;
}
int main()
{

    for(int i=0;i<10;i++)
    {
        s[i]=2021;   //卡片共有2021张
    }
    for(int i=0;;i++)
    {
        if(!check(i))    //如果卡片不能拼凑起来即不符合题意
        {
            cout<<i-1<<endl;   //参考题目中的11
            break;
        }
    }
    return 0;
}

最后跑出的结果为3181,问题得到解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值