天天看点

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次
    }
}```