A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。
下图就是一种排法(如有对齐问题,参看p1.png)。
A
9 6
4 8
3 7 5 2
这样的排法可能会有很多。
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?
请你计算并提交该数字。
注意:需要提交的是一个整数,不要提交任何多余内容。
下图就是一种排法(如有对齐问题,参看p1.png)。
A
9 6
4 8
3 7 5 2
这样的排法可能会有很多。
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?
请你计算并提交该数字。
注意:需要提交的是一个整数,不要提交任何多余内容。
package lanq1;
import java.util.Scanner;
public class Main {
private static int[] a = new int[10];
public static int b[]=new int [10];
private static int n;
private static int count=0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
dfs(0);
System.out.println(count);
}
private static void dfs(int pos)
{
if(pos==9)
{//全排列到了长度为10,要进行判别
//count++;
if(a[0]+a[4]+a[2]+a[8]==a[0]+a[1]+a[3]+a[5]&&a[0]+a[1]+a[3]+a[5]==a[6]+a[7]+a[8]+a[5])
{
count++;
}
}
for(int i=1;i<=9;i++)
{//首位为i
if(b[i]==0)
{//如果还没被访问才可以继续搜索
a[pos]=i;
b[i]=1;//第i个进行访问,则设置已访问
dfs(pos+1);//一位一位地搜索
b[i]=0;//重新设置未访问,因为它有可能出现在下一次全排列当中
}
}
}
}