码迷,mamicode.com
首页 > 编程语言 > 详细

蓝桥杯,算法提高,8皇后·改

时间:2018-03-04 21:49:34      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:规则   疑问   蓝桥杯   ++   data   ret   最大的   最大数   str   

  题目如下:

问题描述
  规则同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\n",s);
35     return 0;
36 }

 

蓝桥杯,算法提高,8皇后·改

标签:规则   疑问   蓝桥杯   ++   data   ret   最大的   最大数   str   

原文地址:https://www.cnblogs.com/search-the-universe/p/last_month_4.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!