蓝桥杯-第八届省赛第三题

题目

标题:纸牌三角形

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

  A
 9 6
4   8    3 7 5 2

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

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

请你计算并提交该数字。

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


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

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

过程

public class action2 {
		//
		public static int a[]=new int [9];
		//
		public static int s[]=new int [9];
		public static int sum=0;
	public static void main(String[] args) {
		f(0);
		System.out.println(sum/6);//因为考虑镜面和旋转所以除以6
	}
	public static void f(int c){
		if (c==9) {
			//控制三边相等
			if (s[0]+s[1]+s[3]+s[5]==s[0]+s[2]+s[4]+s[8]&&s[0]+s[2]+s[4]+s[8]==s[5]+s[6]+s[7]+s[8]) {
				sum++;
				return;
			}
		}else {
			for (int i = 0; i <a.length; i++) {
				if (a[i]==0) {
					//该卡片已被调用
					a[i]=1;
					//存入数值
					s[c]=i+1;
					//向下调用
					f(c+1);
					//循环完恢复未被调用的状态
					a[i]=0;
				}
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_44561488/article/details/87875622