_搭积木 java

问题描述:

小明最近喜欢搭数字积木,
一共有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 _07搭积木 {

	public static void main(String[] args) {
		int count = 0;
		int[][] arr = new int[4][4];
		for(int a = 1;a < 5;a++)
			for(int b = 1;b < 5;b++)
			for(int c = 1;c < 8;c++)
			for(int d = 1;d < 8;d++)
			for(int e = 1;e < 8;e++)
			for(int f = 1;f < 10;f++)
			for(int g = 1;g < 10;g++)
			for(int h = 1;h < 10;h++)
			for(int i = 1;i < 10;i++){
				//每一位数字都不相等
				if(a != b && a!=c && a!=d && a!=e && a!=f && a!=g && a!=h && a!=i
						&& b!=c && b!=d && b!=e && b!=f && b!=g && b!=h && b!=i
						&& c!=d && c!=e && c!=f && c!=g && c!=h && c!=i
						&& d!=e && d!=f && d!=g && d!=h && d!=i
						&& e!=f && e!=g && e!=h && e!=i
						&& f!=g && f!=h && f!=i
						&& g!=h && g!=i
						&& h!=i){
					//每个数字比它下面两个数字小
					if(a < c && a < d && b < d && b < e && c<f && c<g && d<g && d<h && e<h && e<i){
						arr[0][0] = 0;arr[1][0] = a;arr[1][1] = b;arr[2][0] = c;
						arr[2][1] = d;arr[2][2] = e;arr[3][0] = f;arr[3][1] =g;
						arr[3][2] = h;arr[3][3] = i;
						//打印所有积木搭法
						for(int u = 0;u < 4;u++){
							for(int o = 0;o <=u;o++){
								System.out.print(arr[u][o]+" ");
							}
							System.out.println();
						}
						count++;
					}
				}
			}
		System.out.println(count);
	}

}

猜你喜欢

转载自blog.csdn.net/Baobab_Tree/article/details/88257273
今日推荐