天天看點

Java習題練習:紙牌三角形

Java習題練習:紙牌三角形

目錄

  • ​​🍋題目描述​​
  • ​​🍋整體思路​​
  • ​​🍋源代碼​​

🍋題目描述

A,2,3,4,5,6,7,8,9 共9張紙牌排成一個正三角形(A按1計算)。要求每個邊的和相等。

下圖就是一種排法:

Java習題練習:紙牌三角形

這樣的排法可能會有很多。

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

請你計算并送出該數字。

🍋整體思路

🍋源代碼

public class Main
{
    static int [] arr= {1,2,3,4,5,6,7,8,9};//全局變量
    static int ans;//答案
    
    static void f(int []arr,int k){
        if(k==9) {//當k==9,排列完成
            //三條邊的數目
            int x1=arr[0]+arr[1]+arr[5]+arr[7];
            int x2=arr[1]+arr[4]+arr[6]+arr[2];
            int x3=arr[0]+arr[8]+arr[3]+arr[2];
            if(x1==x2&&x2==x3) {
                ans++;//ans++
            }
        }
        //全排列的模闆
        for(int i=k;i<9;i++) {
            int t=arr[k];
            arr[k]=arr[i];
            arr[i]=t;
            f(arr,k+1);
            t=arr[k];
            arr[k]=arr[i];
            arr[i]=t;
        }
    }
  
    public static void main(String[] args){
        f(arr,0);//調用函數
        System.out.println(ans/6);//旋轉3次,每次旋轉2次
    }
}```