蓝桥杯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第六届决赛第三题--显示二