纸牌三角形
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