C语言之蓝桥杯习题(3)☞暴力求解版(思路写在解题过程中)

第一题.

1.问题:小蓝数字卡片题

小蓝有很多数字卡片,每张卡片上都是数字0到9。 小蓝准备用这些卡片来拼一些数,他想从1开始拼现在小蓝手里有0到9的卡片各2021张,共20210张,请问小蓝可以从1拼到多少?

2.解题过程:

(1).转化字符串法:

//法一
struct num { char a; int b; };
struct num x[10];//结构体数组用于存放数字和其卡片数量
int main()
{
    char m[10] = { '0' };
    int arr[10] = { 0 };
    int a, b, c, d;
    for (a = 0; a < 10; a++)//存放0`9
    {
        x[a].a = '0' + a;
    }
    for (a = 0; a < 10; a++)//存放卡牌数
    {
        x[a].b = 2021;
    }
    for (a = 1;; a++)
    {
        sprintf(m, "%d", a);//数字转化字符
        b = strlen(m);
        for (c = 0; c < b; c++)
        {
            for (d = 0; d < 10; d++)
            {
                if (x[d].b == 0)判断是否有一个数字卡牌用完,然后输出结束所有循环
                {
                    goto h;
                }
                else
                {
                    if (m[c] == x[d].a)//进行相应卡牌的减少
                    {
                        x[d].b--; break;
                    }
                }
            }
        }
    }h:printf("%d", a - 1);
    return 0;
}

(2).直接(暴力求解)法

//法二
int arr[10];
void judge(int a)//进行卡片数量的加减
{
    switch (a)
    {
    case 0:arr[0]--;
        break;
    c
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值