第八届蓝桥杯java b组第二题
标题:纸牌三角形
A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。
下图就是一种排法(如有对齐问题,参看p1.png)。
A
9 6
4 8
3 7 5 2
这样的排法可能会有很多。
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?
请你计算并提交该数字。
注意:需要提交的是一个整数,不要提交任何多余内容。
这题没什么好说的 暴力破解模型 将不同位置的数认为一个排列 然后中间的位置认为相等 然后三处有想好可换
那么最后需要除2和除3
import java.util.Stack; public class Test2 { private static int count=0; public static void main(String[] args) { Stack<Integer> stack=new Stack<Integer>(); for(int i=1;i<=9;i++){ stack.push(i); fun(stack); stack.pop(); } System.out.println(count/2/3); } private static void fun(Stack<Integer> stack) { if(stack.size()==9){ int A=stack.get(0); int B=stack.get(1); int C=stack.get(2); int D=stack.get(3); int E=stack.get(4); int F=stack.get(5); int G=stack.get(6); int H=stack.get(7); int I=stack.get(8); int ACEI=A+C+E+I; int ABDF=A+B+D+F; int FGHI=F+G+H+I; if(ACEI==ABDF&&ABDF==FGHI){ ++count; System.out.printf("%d %d %d %d %d %d %d %d %d %d %d %d",A,B,D,F,A,C,E,I,F,G,H,I); System.out.println(); } } for(int j=1;j<=9;j++){ if(!stack.contains(j)){ stack.push(j); fun(stack); stack.pop(); } } } }
恐惧源于无知,代码改变世界