蓝桥杯模拟赛第五场

来源:互联网 发布:美工的职责 编辑:程序博客网 时间:2024/05/10 05:57

题目:九宫格

将数字1~9填入一个3×3的九宫格中,使得格子中每一横行和的值全部相等,每一竖列和的值全部相等。请你计算有多少种填数字的方案。


思路:

将九宫格看做一个一维数组,初始如下,然后求1~9的全排列,每求出一个排列,判断一次是否符合规则,符合的话统计数加一


代码:

public class Main {private static int n=9,c=0;private static int[] a={1,2,3,4,5,6,7,8,9};public static void main(String[] args) {// TODO Auto-generated method stubperm(0);System.out.println(c);}private static void perm(int k) {// TODO Auto-generated method stubif(k==n){if(judge()){c++;}return;}for(int i=k;i<n;i++){swap(k, i);perm(k+1);swap(k, i);}}private static void swap(int x,int y){int t=a[x];a[x]=a[y];a[y]=t;}//判断是否符合规则private static boolean judge(){int t=a[0]+a[1]+a[2];if(t!=a[3]+a[4]+a[5]||t!=a[6]+a[7]+a[8]||t!=a[0]+a[3]+a[6]||t!=a[1]+a[4]+a[7]||t!=a[2]+a[5]+a[8]){return false;}return true;}}


0 0