当前位置: 代码迷 >> 综合 >> 蓝桥杯——历届试题 纸牌三角形
  详细解决方案

蓝桥杯——历届试题 纸牌三角形

热度:95   发布时间:2024-02-11 04:12:19.0

问题描述:


A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。

      A9 64   83 7 5 2


这样的排法可能会有很多。
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?

思路:

1. 全排列问题;

2. 

      A               a[0]9 6           a[1]  a[2]4   8        a[3]       a[4]3 7 5 2     a[5] a[6] a[7] a[8]

三条边的和相等,即

int s1 = a[0]+a[1]+a[3]+a[5];
int s2 = a[0]+a[2]+a[4]+a[8];
int s3 = a[5]+a[6]+a[7]+a[8];

 

3. 旋转、镜像后相同的算同一种,即左右对称、三个角的为同一个,所以最后结果除以6;

 

 

代码:

package s01;public class ZhiPai {static int[] a = {1,2,3,4,5,6,7,8,9};static int s;public static void main(String[] args) {fns(0);System.out.print(s/6);}static void fns(int begin) {if(begin==8) {int s1 = a[0]+a[1]+a[3]+a[5];int s2 = a[0]+a[2]+a[4]+a[8];int s3 = a[5]+a[6]+a[7]+a[8];if(s1==s2 && s2==s3)s++;}for(int i=begin;i<=8;i++) {int t = a[begin];a[begin] = a[i];a[i] = t;fns(begin+1);int m = a[begin];a[begin] = a[i];a[i] = m;}}}

蓝桥纸牌三角形 JAVA暴解

  相关解决方案