1. 程式人生 > >第八屆藍橋杯第二題

第八屆藍橋杯第二題

a+b stat port png AC imp 正三角 pla contain

標題:紙牌三角形

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(); } } } }
View Code

第八屆藍橋杯第二題