版权声明:本文为博主原创文章,未经博主允许不得转载。
一、问题描述
A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。下图就是一种排法。
这样的排法可能会有很多。如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?请你计算并提交该数字。
注意:需要提交的是一个整数,不要提交任何多余内容。
二、题目类型:结果填空、全排列
三、解题思路及代码
今天状态不是很好,做题目的时候很焦躁。。。。
这题目最野蛮的思路是:把图看成有9个空需要填充,如下图:
每个空都有9种可能的数值,于是乎遍历所有可能,把9个数互不相等的并且每边之和相等的情况自增 1 。因为题目说到:考虑旋转、镜像后相同的算同一种。旋转的情况有3种,镜像的情况有2种,所以要把最终结果除以6,得出答案。
代码如下(非常暴力,但一个结果填空题,能跑出结果就好,效率问题who care?):
1 public class CardTriangle { 2 3 public static void main(String[] args) { 4 int count=0; 5 for(int a=1; a<=9;a++) { 6 for(int b=1; b<=9; b++) { 7 for(int c=1;c<=9;c++) { 8 for(int d=1;d<=9;d++) { 9 for(int e=1;e<=9;e++) { 10 for(int f=1;f<=9;f++) { 11 for(int g=1; g<=9;g++) { 12 for(int h=1;h<=9;h++) { 13 for(int i=1;i<=9;i++) { 14 if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&& 15 b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i&& 16 c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i&& 17 d!=e&&d!=f&&d!=g&&d!=h&&d!=i&& 18 e!=f&&e!=g&&e!=h&&e!=i&& 19 f!=g&&f!=h&&f!=i&& 20 g!=h&&g!=i&& 21 h!=i) { 22 if((a+b+d+f)==(a+c+e+i)&&(a+c+e+i)==(f+g+h+i)) count++; 23 } 24 } 25 } 26 } 27 } 28 } 29 } 30 } 31 } 32 } 33 System.out.println(count/6); 34 } 35 }
四、反思与总结(祈祷)
希望第十届蓝桥杯可以对我友好一点!