题目背景
猪猪 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);}}}}}}}}}}}
}
代码变态却实在有效 :)