问题描述: 在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。 编程任务: 对于给定n堆石子,编程计算合并成一堆的最小得分和最大得分。 数据输入: 第1 行是正整数n,1£n£100,表示有n堆石子。第二行有n个数,分别表示每堆石子的个数。 结果输出: 输出的第1 行中的数是最小得分;第2 行中的数是最大得分。
1
Word文档,含完整代码cpp文件,可运行,优秀课设。 针对石子合并问题,本文利用动态规划算法寻求石子合并时的最大,最小得分,选择相邻的两堆石子堆进行合并,其最终花费的代价与石子堆的排列顺序有关。根据其重叠子问题建立状态转移方程,利用程序进行求解。算例结果显示:将4堆石子合并成一堆,每堆的石子个数分别是4,4,5,9,合并的代价最小得分为43,最大得分为54。 针对运动员最佳配对问题,本文利用回溯法寻求竞赛优势得分最优解,研究男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。针对这一问题,本题采用的是男运动员选女运动员的方法,构成了一棵排列树。树的结点表示女运动员,排列树的层数表示男运动员,经过算法处理后,输出符合最优值的编号。算例结果显示:男1号和女1号组合、男2号和女3号组合,男3号和女2号组合,竞赛优势最大。该算法简便、易懂,又有比较好的实用性和技巧性。
动态规划解石子合并问题,其中石子呈环形排列。源程序为c++代码。
2021-12-20 21:31:34 911B 动态规划 石子合并
1
在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只 能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一 个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。
2021-12-10 09:08:56 2KB 合并 最大得分 最小得分
1
实现3-3石子合并问题.cpp
2021-06-01 14:03:23 2KB 算法设计与分析
1
Problem D:石子合并(包含源程序c++) Time Limit:1000MS Memory Limit:65536K Description 在一个圆形操场的四周摆放着 n 堆石子. 现要将石子有次序地合并成一堆, 规定每次只能选相邻的 2 堆石子合并成新的一堆, 并将新的一堆石子数记为该次合并的得分. 本题对于给定 n 堆石子, 计算合并成一堆的最小得分和最大得分. Input 测试用例的第 1 行是正整数 n(1 ≤ n ≤ 100)表示有 n 堆石子. 第二行有 n 个数, 分别表示每堆石子的个数. Output 对于测试用例的输入数据, 在两行上输出结果: 其中第 1 行中的数是最小得分, 第 2 行中的数是最大得分. Sample Input 4 4 4 5 9 Sample Output 43 54
2019-12-21 21:52:53 28KB 石子合并 石子合并问题 源程序 程序
1
用 动态规划 解决 石子合并 问题 用 动态规划 解决 石子合并 问题 用 动态规划 解决 石子合并 问题
2019-12-21 19:35:37 153KB 石子合并 动态规划
1