第八屆藍橋杯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

        這樣的排法可能會有不少。

        若是考慮旋轉、鏡像後相同的算同一種,一共有多少種不一樣的排法呢?

        請你計算並提交該數字。

        注意:須要提交的是一個整數,不要提交任何多餘內容。

這題沒什麼好說的 暴力破解模型 將不一樣位置的數認爲一個排列 而後中間的位置認爲相等 而後三處有想好可換java

那麼最後須要除2和除3ide

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
相關文章
相關標籤/搜索