蓝桥杯 纸牌三角形
2018-03-07 17:40
204 查看
纸牌三角形
A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。下图就是一种排法(如有对齐问题,参看p1.png)。
这样的排法可能会有很多。
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?
请你计算并提交该数字。
注意:需要提交的是一个整数,不要提交任何多余内容。
思路:
读完题,首先想到的就是暴力求解(全排列),找出所有等边三角形
但是由于题上要求说旋转、镜像后相同的算同一种,所以最后要排除掉一些三角形
怎么排除呢?
三角形可以旋转2次,镜像3次,即2*3=6种情况要合并成一种
所以,最终的结果要除以6
代码如下:
public class Question2 { static int[] a = {1,2,3,4,5,6,7,8,9}; static int sum = 0; public static void main(String[] args){ fun(0,a.length); System.out.println(sum/6); } private static void fun(int begin, int end) { if(begin>=end){ if((a[0]+a[1]+a[2]+a[3]) == (a[3]+a[4]+a[5]+a[6]) && (a[3]+a[4]+a[5]+a[6]) == (a[6]+a[7]+a[8]+a[0])) sum++; // System.out.println(Arrays.toString(a)); return; } for (int i = begin; i < end; i++) { swap(begin,i); fun(begin+1,end); swap(begin,i); } } 4000 private static void swap(int x, int y) { // TODO Auto-generated method stub int t = a[x]; a[x] = a[y]; a[y] = t; } }
经典的全排列方式
相关文章推荐
- 2017第八届蓝桥杯 03 纸牌三角形(java)
- 第八届蓝桥杯B组java省赛 纸牌三角形
- 蓝桥杯java第八届第二题--纸牌三角形
- 第八届蓝桥杯 java B组 纸牌三角形
- 第八届蓝桥杯 省赛B组第二题纸牌三角形
- 第八届蓝桥杯B组(Java) 第二题 纸牌三角形
- 第八届蓝桥杯纸牌三角形
- 第八届蓝桥杯JavaB组-纸牌三角形
- 蓝桥杯の纸牌三角形
- 蓝桥杯之纸牌三角形
- 蓝桥杯 数字三角形
- 蓝桥杯-算法训练-数字三角形
- 标题:纸牌三角形
- 第六届蓝桥杯 省赛 JavaB组 三角形面积
- 蓝桥杯算法训练 数字三角形
- 蓝桥杯:算法训练 数字三角形
- 蓝桥杯算法提高 12-1三角形
- 蓝桥杯2017第二题 纸牌三角形
- 蓝桥杯 ADV-88 算法提高 输出正反三角形
- 第八届省赛 —— 题2 — 纸牌三角形