蓝桥杯第八届省赛真题JavaB组----纸牌三角形

纸牌三角形

A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。
下图就是一种排法(如有对齐问题,参看p1.png)。

  A
 9 6
4   8

这样的排法可能会有很多。

如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?

解题思路:第一种:9个for循环,暴力求解;第二种:全排列加check。需要注意的是,旋转,镜像算同一种,三个角和三个镜像一共有6种,所以要在最终结果那里除6.
public class Demo_8_02 {

	public static void main(String[] args) {
		int count=0;
		for(int a=1;a<10;a++) {
			for(int b=1;b<10;b++) {
				if(a==b)continue;
				for(int c=1;c<10;c++) {
					if(a==c||b==c)continue;
					for(int d=1;d<10;d++) {
						if(a==d||b==d||c==d)continue;
						for(int e=1;e<10;e++) {
							if(a==e||b==e||c==e||d==e)continue;
							for(int f=1;f<10;f++) {
								if(a==f||b==f||c==f||d==f||e==f)continue;
								for(int g=1;g<10;g++) {
									if(a==g||b==g||c==g||d==g||e==g||f==g)continue;
									for(int h=1;h<10;h++) {
										if(a==h||b==h||c==h||d==h||e==h||f==h||g==h)continue;
										for(int i=1;i<10;i++) {
											if(a==i||b==i||c==i||d==i||e==i||f==i||g==i||h==i)continue;
											if((a+b+d+f)==(a+c+e+i)&&(a+c+e+i)==(f+g+h+i)) {
												count++;
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		System.out.println(count/6);
	}
}
输出:144

猜你喜欢

转载自blog.csdn.net/qq_41765969/article/details/88750095