烤鸡#洛谷

文章描述了一个编程问题,要求根据给定的美味程度找到10种配料的所有有效组合,使用暴力搜索方法解决,注意边界条件的处理。

题目背景

猪猪 Hanke 得到了一只鸡。

题目描述

猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 101010 种配料(芥末、孜然等),每种配料可以放 111333 克,任意烤鸡的美味程度为所有配料质量之和。

现在, Hanke 想要知道,如果给你一个美味程度 nnn ,请输出这 101010 种配料的所有搭配方案。

输入格式

一个正整数 nnn,表示美味程度。

输出格式

第一行,方案总数。

第二行至结束,101010 个数,表示每种配料所放的质量,按字典序排列。

如果没有符合要求的方法,就只要在第一行输出一个 000

样例 #1

样例输入 #1

11

样例输出 #1

10
1 1 1 1 1 1 1 1 1 2 
1 1 1 1 1 1 1 1 2 1 
1 1 1 1 1 1 1 2 1 1 
1 1 1 1 1 1 2 1 1 1 
1 1 1 1 1 2 1 1 1 1 
1 1 1 1 2 1 1 1 1 1 
1 1 1 2 1 1 1 1 1 1 
1 1 2 1 1 1 1 1 1 1 
1 2 1 1 1 1 1 1 1 1 
2 1 1 1 1 1 1 1 1 1

提示

对于 100%100\%100% 的数据,n≤5000n \leq 5000n5000

num= int(input())
value_ans = []
value_sum = 0
if num>=10 and num<=30:
    mapp = [1, 2, 3]
    for a in mapp:
        for b in mapp:
            for c in mapp:
                for d in mapp:
                    for e in mapp:
                        for f in mapp:
                            for g in mapp:
                                for h in mapp:
                                    for i in mapp:
                                        for j in mapp:
                                            if a + b + c + d + e + f + g + h + i + j == num:
                                                value_ans.append(list([a, b, c, d, e, f, g, h, i, j]))
                                                value_sum += 1
    if value_sum!=0:
        print(value_sum)
        for item in range(value_sum):
            print_ans=value_ans[item]
            for j in range(10):
                print(print_ans[j],end=' ')
            print()
else:
    print(0)

这道题目就是提单的名字直接爆力搜索。注意的是如果美味超过了三十或者小于十都是无法构成的,可以特殊判断进行直接输出即可。再就是输出的时候,输出的列表是含有逗号和中括号的,这样子输出不符合题目要求,要特别设置一个数列进行承接。特别再设置一个的原因是列表中录入列表,并不能当作二维数组来看待。因此不能使用value_ans[][]来输出

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

直接AC好吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值