Java(真题训练):纸牌三角形

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

   A
  9 6
 4   8
3 5 7 9

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

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

请你计算并提交该数字。

注意:需要提交的是一个整数,不要提交任何多余内容。


笨笨有话说:
感觉可以暴力破解哦。
麻烦的是,对每个排法还要算出它的旋转、镜像排法,看看有没有和历史重复。

歪歪有话说:
人家又不让你把所有情况都打印出来,只是要算种类数。
对于每个基本局面,通过旋转、镜像能造出来的新局面数目不是固定的吗?

public class Main {
	static int[] a={1,2,3,4,5,6,7,8,9};
	static int ans;
	//镜像后是三次,旋转后也是三次,所以最后应该除6
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		pai(0);
		System.out.println(ans/6);
	}
	static void pai(int b){
		if (b==9) {
			int s=a[0]+a[1]+a[3]+a[5];
			int ss=a[0]+a[2]+a[4]+a[8];
			int sss=a[5]+a[6]+a[7]+a[8];
			if (s==ss && ss==sss) {
				ans++;
			}
		}
		//全排列
		for (int i = b; i < 9; i++) {
			{int t=a[b];a[b]=a[i];a[i]=t;}
			pai(b+1);
			{int t=a[b];a[b]=a[i];a[i]=t;}
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值