七星填数

  1. 我们可以使用一位数组,用于存放14个数;
  2. 用一个boolean数组用于确定该数字是否被放进去了
  3. DFS+回溯 全排列 列举出所有得到可能(除了已经知道的数字)
  4. 知道符合条件() ```java public class 七星填数 {

static int [] arr = new int[14]; static boolean isb[] = new boolean[15]; public static void main(String[] args) { arr[0] = 6; arr[7] = 14; arr[8] = 11; isb[6] = isb[14] = isb[11] = true; //
f(0); } public static void f(int step){ if(step == 0||step==7||step==8){ //当深搜到已经知道的数字,就跳过 f(step+1); return; }

  1. if(step >13){ //在所有的数字都遍历出来时候,进行验算认证
  2. int a1 = arr[1]+arr[2]+arr[3]+arr[4];
  3. int a2 = 6+arr[2]+arr[5]+14;
  4. int a3 = 6+arr[3]+arr[6]+11;//
  5. int a4 = arr[1]+arr[5]+arr[9]+arr[11];//
  6. int a5 = arr[4]+arr[6]+arr[10]+arr[13];
  7. int a6 = 14+arr[9]+arr[12]+arr[13];//
  8. int a7 = 11+arr[11]+arr[12]+arr[10];
  9. if(a1 == a2 && a2 == a3 && a3 == a4 && a4 == a5 && a5 == a6 && a6 == a7){
  10. for (int i : arr) {
  11. System.out.println(i);
  12. }
  13. }
  14. }
  15. //循环回溯
  16. for(int i = 0;i<arr.length;i++){
  17. if(!isb[i+1]){//如果没有被选择过
  18. isb[i+1] = true;
  19. arr[step] = i+1;
  20. f(step+1);
  21. isb[i+1] = false;
  22. }
  23. }

} ```

}