A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。
下图就是一种排法(如有对齐问题,参看p1.png)
A
9 6
4 8
3 7 5 2
这样的排法可能会有很多。
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?
请你计算并提交该数字。
注意:需要提交的是一个整数,不要提交任何多余内容。
https://blog.csdn.net/qq_39592670/article/details/79464641
跟六角填数都一类的,看看吧
package it;
public class Main1 {
static int a[] = new int[100];
static int ed[] = new int[100];
static int min = 0;
public static void main(String[] args) {
dfs(1);
System.out.println(min/6);//镜像 旋转在此除以6
}
private static void dfs(int s) {
if (s == 10) {
judge();
}
for (int i = 1; i <= 9; i++) {
if (ed[i] == 0) {
ed[i] = 1;
a[s] = i;
dfs(s + 1);
ed[i] = 0;
}
}
}
private static void judge() {
int b[] = new int[3];
b[0] = a[1] + a[2] + a[4] + a[6];
b[1] = a[1] + a[3] + a[5] + a[9];
b[2] = a[6] + a[7] + a[8] + a[9];
for (int i = 1; i < 3; i++) {
if (b[i] != b[i - 1])
return;
}
min++;
}
}