/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生
* All rights reserved.
* 文件名称: 蓝桥杯赛题
* 作 者: 彭俊豪
* 完成日期: 2016 年 04月 01日
* 版 本 号: 001
* 对任务及求解方法的描述部分
* 问题描述:
小明最近喜欢搭数字积木,
一共有10块积木,每个积木上有一个数字,0~9。
搭积木规则:
每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木。
下面是两种合格的搭法:
0
1 2
3 4 5
6 7 8 9
0
3 1
7 5 2
9 8 6 4
请你计算这样的搭法一共有多少种?
* 程序输出: 请填表示总数目的数字。
* 程序头部的注释结束
*/
上代码:
public class Main {
public static void main(String[] args) {
int count=0;
for(int i=0;i<10;i++){
for(int j=1;j<10;j++){
for(int k=1;k<10;k++){
for(int l=1;l<10;l++){
for(int m=1;m<10;m++){
for(int n=1;n<10;n++){
for(int o=1;o<10;o++){
for(int p=1;p<10;p++){
for(int q=1;q<10;q++){
for(int r=1;r<10;r++){
int arr[] = new int[]{i,j,k,l,m,n,o,p,q,r};
if(panDuan(arr)==1){
if (i<j&&i<k&&j<l&&j<m&&k<m&&k<n&&l<o&&l<p&&m<p&&m<q&&n<q&&n<r) {
System.out.println(i+" "+j+" "+k+" "+l+" "+m+" "+n+" "+o+" "+p+" "+q+" "+r);
count++;
}
}
}
}
}
}
}
}
}
}
}
}
System.out.println(count);
}
public static int panDuan(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
return 0;
}
}
}
return 1;
}
}