烤鸡
题目描述
猪猪Hanke特别喜欢吃烤鸡(本是同畜生,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末、孜然等),每种配料可以放1到3克,任意烤鸡的美味程度为所有配料质量之和。
现在,Hanke想要知道,如果给你一个美味程度n,请输出这10种配料的所有搭配方案。
输入描述
一个正整数n,表示美味程度。
输出描述
第一行,总方案数。
第二行至结束,10个数,表示每种配料所放的质量,按字典序排列。
如果没有符合要求的方法,就只要在第一行输出一个0。
样例输入
11
样例输出
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
代码详解
展开查看
n = int(input()) arr = [0 for i in range(10+1)] #存临时方案 mem = [[0 for i in range(10+1)] for i in range(100+1)] #存所有方案 res = 0 def dfs(x, sum): global res if sum > n: return if x > 10: if (sum == n): res += 1 for i in range(1, 10+1): mem[res][i] = arr[i] return for i in range(1, 3+1): arr[x] = i dfs(x+1, sum+i) arr[x] = 0 #恢复现场dfs(1, 0) # 打印方案数 print(res) # 打印具体方案 for i in range(1, res+1): for j in range(1, 10+1): print(mem[i][j], end=" ") print()
运行结果
展开查看
11 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