题目背景
猪猪 Hanke 得到了一只鸡。
题目描述
猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 10 种配料(芥末、孜然等),每种配料可以放 1 到 3 克,任意烤鸡的美味程度为所有配料质量之和。
现在, Hanke 想要知道,如果给你一个美味程度 n ,请输出这 10 种配料的所有搭配方案。
输入格式
一个正整数 n,表示美味程度。
输出格式
第一行,方案总数。
第二行至结束,10 个数,表示每种配料所放的质量,按字典序排列。
如果没有符合要求的方法,就只要在第一行输出一个 0。
输入输出样例
输入 #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% 的数据,n≤5000。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
if(n < 10 || n > 30) {//因为每种配料最少放1克,最多3克,
//因此在此范围之外的n根本不可能发生
System.out.print(0);
return;
}
int a,b,c,d,e,f,g,h,i,j;
int count = 0;
for(a = 1;a <= 3;a++) {
for(b = 1;b <= 3;b++) {
for(c = 1;c <= 3;c++) {
for(d = 1;d <= 3;d++) {
for(e = 1;e <= 3;e++) {
for(f = 1;f <= 3;f++) {
for(g = 1;g <= 3;g++) {
for(h = 1;h <= 3;h++) {
for(i = 1;i <= 3;i++) {
for(j = 1;j <= 3;j++) {
if(a+b+c+d+e+f+g+h+i+j == n) count++;
}
}
}
}
}
}
}
}
}
}
System.out.println(count);
for(a = 1;a <= 3;a++) {
for(b = 1;b <= 3;b++) {
for(c = 1;c <= 3;c++) {
for(d = 1;d <= 3;d++) {
for(e = 1;e <= 3;e++) {
for(f = 1;f <= 3;f++) {
for(g = 1;g <= 3;g++) {
for(h = 1;h <= 3;h++) {
for(i = 1;i <= 3;i++) {
for(j = 1;j <= 3;j++) {
if(a+b+c+d+e+f+g+h+i+j == n)
System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h+" "+i+" "+j);
}
}
}
}
}
}
}
}
}
}
}
}
代码变态却实在有效 :)