蓝桥杯java第六届决赛第二题--五星填数
生活随笔
收集整理的这篇文章主要介绍了
蓝桥杯java第六届决赛第二题--五星填数
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
标题:五星填数如【图1.png】的五星图案节点填上数字:1~12,除去7和11。要求每条直线上数字和相等。如图就是恰当的填法。请你利用计算机搜索所有可能的填法有多少种。注意:旋转或镜像后相同的算同一种填法。请提交表示方案数目的整数,不要填写任何其它内容。
package com.sihai.liujie;/*** 全排列* @author sihai**/
public class _2 {public static int count = 0;public void swap(int[] A, int i, int j) {int temp = A[i];A[i] = A[j];A[j] = temp;}public void check(int[] A) {int sum1 = A[0] + A[2] + A[5] + A[8];int sum2 = A[0] + A[3] + A[6] + A[9];int sum3 = A[1] + A[2] + A[3] + A[4];int sum4 = A[1] + A[5] + A[7] + A[9];int sum5 = A[4] + A[6] + A[7] + A[8];if(sum1 == sum2 && sum1 == sum3 && sum1 == sum4 && sum1 == sum5) {count++;} elsereturn;}public void dfs(int[] A, int step) {if(step == A.length) {check(A);return;} else {for(int i = step;i < A.length;i++) {swap(A, i, step);dfs(A, step + 1);swap(A, i, step);}}}public static void main(String[] args) {_2 test = new _2();int[] A = {1,2,3,4,5,6,8,9,10,12};test.dfs(A, 0);System.out.println(count / 10);}
}
总结
以上是生活随笔为你收集整理的蓝桥杯java第六届决赛第二题--五星填数的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 蓝桥杯java第六届决赛第一题--分机号
- 下一篇: 蓝桥杯java第六届决赛第三题--显示二