8皇后·改-进阶题16

发布时间:2026/7/17 16:04:47

8皇后·改-进阶题16 分解质因数题目问题描述规则同8皇后问题但是棋盘上每格都有一个数字要求八皇后所在格子数字之和最大。8皇后问题在一个 8 × 8 的国际象棋棋盘上放置 8 个皇后要求任意两个皇后 不能在同一行任意两个皇后 不能在同一列任意两个皇后 不能在同一条对角线也就是说任何一个皇后都 不能攻击到另一个皇后。输入说明一个8*8的棋盘。数据规模和约定棋盘上的数字范围0~99输出说明所能得到的最大数字和输入范例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解题思路本题思路是利用 回溯搜索DFS 状态标记 最优值更新 来解决带权值的 8 皇后问题。在经典 8 皇后的基础上每个位置都有一个权值目标是在满足皇后互不攻击的前提下使所选位置的数字之和最大。具体做法是从第 0 行开始逐行放置皇后每一行尝试放在某一列 c前提是该列、主对角线row - col、副对角线row col均未被占用。通过 col[]、drag1[]、drag2[] 三个数组进行标记来快速判断是否合法。如果当前位置可以放置皇后则标记该位置并递归进入下一行同时将当前格子的权值累加到 sum 中当递归到第 8 行即成功放置 8 个皇后时用当前路径的总和更新全局最大值 res。整个过程通过回溯遍历所有合法的摆放方案从而找到最大权值和。整体代码#includebits/stdc.husingnamespacestd;intboard[8][8];boolcol[8]{false};booldrag1[20]{false};booldrag2[20]{false};intres0;voiddfs(introw,intsum){if(row8){resmax(res,sum);return;}for(intc0;c8;c){if(!col[c]!drag1[row-c7]!drag2[rowc]){col[c]drag1[row-c7]drag2[rowc]true;dfs(row1,sumboard[row][c]);col[c]drag1[row-c7]drag2[rowc]false;}}}intmain(){for(inti0;i8;i){for(intj0;j8;j){cinboard[i][j];}}dfs(0,0);coutresendl;return0;}注意事项注意与经典8皇后的区别不再是统计方案数而是求最大权值和需要用 res max(res, sum) 更新答案。英文段落翻译自己翻译计算机视觉旨在是计算机能够理解和分析图像和视频的信息。随着深度学习技术的发展计算机视觉已经实现了显著的进步。在例如图像分类对象识别和语义分割等任务中卷积神经网络完成的十分好。通过在大型标签数据集中训练模型能够学习复杂的视觉特征。近几年计算机视觉技术已经被广泛的应用在例如自动驾驶安全监督和工业检查等领域中了。例如在自动驾驶系统中视觉模型能够识别道路车辆和行人帮助系统做出安全的决定。单词打卡下一篇待续

相关新闻