• 算法提高 8皇后·改


    /*
    算法提高 8皇后·改  
    
    问题描述
      规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大。
    输入格式
      一个8*8的棋盘。
    输出格式
      所能得到的最大数字和
    样例输入
    1 2 3 4 5 6 7 8
    9 10 11 12 13 14 15 16
    17 18 19 20 21 22 23 24
    25 26 27 28 29 30 31 32
    33 34 35 36 37 38 39 40
    41 42 43 44 45 46 47 48
    48 50 51 52 53 54 55 56
    57 58 59 60 61 62 63 64
    样例输出
    260
    数据规模和约定
      棋盘上的数字范围0~99
    
    */
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            for (int i = 1; i < b.length; i++) {
                for (int j = 1; j < b[0].length; j++) {
                    b[i][j] = sc.nextInt();
                }
            }
            sc.close();
            dfs(1);
            System.out.println(sum);
        }
    
        static int a[] = new int[9];
        static int sum;
        static int b[][] = new int[9][9];
    
        static void dfs(int n) {
            for (int i = 1; i <= 8; i++) {
                a[n] = i;
                if (check() && n < 8) {
                    dfs(n + 1);
                }
                if (check() && n == 8) {
                    sum();
                }
                a[n] = 0;
            }
        }
    
        static void sum() {
            int sum2 = 0;
            for (int i = 1; i <= 8; i++) {
                sum2 += b[a[i]][i];
            }
            sum = Math.max(sum, sum2);
    
        }
    
        static boolean check() {
            for (int i = 1; i < a.length - 1; i++)
                for (int j = i + 1; j < a.length; j++) {
                    if (a[i] != 0 && a[j] != 0 && (a[i] == a[j] || (Math.abs(a[j] - a[i]) == j - i))) {
                        return false;
                    }
                }
            return true;
        }
    }
  • 相关阅读:
    mysql 单表查询
    socket 阻塞,同步、I/O模型
    I/O复用
    send函数和recv函数
    linux网络编程、系统编程
    TCP三次握手、四次挥手
    支持中文的PHP按字符串长度分割成数组代码
    php json_encode 处理中文
    php base64各种上传
    本地创建分支
  • 原文地址:https://www.cnblogs.com/Alpharun/p/8623021.html
Copyright © 2020-2023  润新知