zoukankan      html  css  js  c++  java
  • Java实现蓝桥杯 算法提高 八皇后 改

                                        **算法提高 8皇后·改**  
    

    时间限制:1.0s 内存限制:256.0MB
    提交此题
    问题描述
      规则同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 bahuanghougai {
    	public static int sum = 0;
    	public static int max = Integer.MIN_VALUE;
    	public static boolean [] col = new boolean [9];
    	public static boolean [] row = new boolean [9];
    	public static int  [] hash = new int [9];
    	public static boolean [] [] bool = new boolean [9][9];		
    public static	int [] [] num = new int [9][9];
    	public static void main(String[] args) {
    		Scanner sc =new Scanner(System.in);
    		for (int i = 1; i <9; i++) {
    			for (int j = 1; j < 9; j++) {
    				num[i][j]=sc.nextInt();
    			}
    		}
    		f(1);
    		System.out.println(max);
    	}
    	public static void f(int step){
    		if(step==9){
    			max=Math.max(sum, max);
    			return;
    		}
    		for (int i = 1; i <= 8; i++) {  
    	        
    	            if (isConfilct(step, i)) {   
    	                continue;  
    	            } else { 
    	                hash[step] = i;
    	                sum+=num[step][i];
    	                f(step + 1);  
    	                sum-=num[step][i];
    	                  hash[step] = -1;  
    	               
    	            }  
    	        }  
    	}
    	 private static boolean isConfilct(int row, int column) {  //一行一个皇后,第n个皇后也代表着第n行
    	        if(row == 1){//第1行永远不会冲突  
    	            return false;  
    	        }  
    	        //只需要保证与那些已经就位的皇后不冲突即可  
    	        for (int i = 1; i < row; i++) {  
    	            if (hash[i] == column || ( column - row) == (hash[i] - i) || (row - column)== (i-hash[i])   
    	                || (row + column) == (hash[i] + i)) {  
    	                return true;  
    	            }  
    	        }  
    	        return false;  
    	    }  
    	  
    
    }
    
    
  • 相关阅读:
    c语言,strcat(),字符串拼接
    c语言,strcpy
    [置顶] linux第二天,g++,gcc,ps,cat,sort,grep,kill,less,ls -l ,
    Yuchuan_Linux_C 编程之四动态库(共享库)制作
    Yuchuan_Linux_C 编程之三 静态库的制作和使用
    Yuchuan_Linux_C编程之二 GCC编译
    Yuchuan_Linux_C编程之一 Vim编辑器的使用
    testng学习笔记-- beforesuit和aftersuit
    testng学习笔记-- beforeclass和afterclass
    pom.xml
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948973.html
Copyright © 2011-2022 走看看