2016蓝桥杯国赛javaB组-B题反幻方(不同于其它答案的九重for循环➕判断)

    xiaoxiao2022-07-07  185

    解题思想:全排列➕去重操作

    全排列核心代码部 

    for(int i=begin;i<end;i++) {                 int temp=n[i];                 n[i]=n[begin];                 n[begin]=temp;                                  qpl(n, begin+1, end);                 temp=n[i];                 n[i]=n[begin];                 n[begin]=temp;                 }

    去重操作代码部

    if(begin==end) {             HashSet<Integer>check=new HashSet<Integer>();             check.add(n[0]+n[1]+n[2]);             check.add(n[3]+n[4]+n[5]);             check.add(n[6]+n[7]+n[8]);             check.add(n[0]+n[3]+n[6]);             check.add(n[1]+n[4]+n[7]);             check.add(n[2]+n[5]+n[8]);             check.add(n[0]+n[4]+n[8]);             check.add(n[2]+n[4]+n[6]);             if(check.size()==8) {                 sum++;             }             }

     

    整体:

    package 一六javaB组决赛;

    import java.util.HashSet;

    public class B{     static int sum=0;     static HashSet<int[]>hash=new HashSet<int[]>();     public static void qpl(int n[],int begin,int end) {         if(begin==end) {             HashSet<Integer>check=new HashSet<Integer>();             check.add(n[0]+n[1]+n[2]);             check.add(n[3]+n[4]+n[5]);             check.add(n[6]+n[7]+n[8]);             check.add(n[0]+n[3]+n[6]);             check.add(n[1]+n[4]+n[7]);             check.add(n[2]+n[5]+n[8]);             check.add(n[0]+n[4]+n[8]);             check.add(n[2]+n[4]+n[6]);             if(check.size()==8) {                 sum++;             }             }         else {             for(int i=begin;i<end;i++) {                 int temp=n[i];                 n[i]=n[begin];                 n[begin]=temp;                                  qpl(n, begin+1, end);                 temp=n[i];                 n[i]=n[begin];                 n[begin]=temp;                 }         }     }          public static void main(String[] args) {         int n[]= {1,2,3,4,5,6,7,8,9};         qpl(n,0,9);         System.out.print(sum/8);     } }

    最新回复(0)