zoukankan      html  css  js  c++  java
  • 蓝桥杯,算法提高,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
    ---------分割线--------
      此题就比较简单啦,记录当前所有方案之中数字之和最大的那个然后输出就行了,对N后问题有什么疑问的可以去看我的上一篇blog.
     1 #include<stdio.h>
     2 int a[8][8];
     3 int vis[3][20]={0};
     4 int t=0;
     5 int x=0;
     6 int s=0;
     7 void dfs(int cur)
     8 {
     9     int i;
    10     if(cur==8)
    11     {
    12         if(s<x)
    13             s=x;
    14     }
    15     else for(i=0;i<8;i++)
    16     {
    17         if(!vis[0][i]&&!vis[1][cur+i]&&!vis[2][cur-i+8])
    18         {
    19             vis[0][i]=vis[1][cur+i]=vis[2][cur-i+8]=1;
    20             x+=a[cur][i];
    21             dfs(cur+1);
    22             vis[0][i]=vis[1][cur+i]=vis[2][cur-i+8]=0;
    23             x-=a[cur][i];
    24         }
    25     }
    26 }
    27 int main()
    28 {
    29     int i,j,max;
    30     for(i=0;i<8;i++)
    31         for(j=0;j<8;j++)
    32             scanf("%d",&a[i][j]);
    33     dfs(0);
    34     printf(" %d
    ",s);
    35     return 0;
    36 }
  • 相关阅读:
    mysql in like GROUP_CONCAT
    StringBuilder的常用方法
    mysql 中unionall 使用
    mysql中,数据库字段为时间戳转时间的处理方法
    一个数组储存多个对象
    Java中的substring()用法
    java思想篇1
    任务调配管理
    字符窜数组去重及各种常规用法
    自定义属性的设值
  • 原文地址:https://www.cnblogs.com/search-the-universe/p/last_month_4.html
Copyright © 2011-2022 走看看