- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分,并分析算法的计算复杂性。
#include stdio.h
#include string.h
#define N 500
#define oo 2000000000
#define MIN(a, b) (a)(b)?(a):(b)
#define MAX(a, b) (a)(b)?(a):(b)
typedef struct { int c, d; } Node;
int n;
int v[N]; // 每堆石头的个数
int save[N]; // 输出最优解的具体合并需要随时改变 v 的值,所以为了同时输出最小,最大的合并,在完成一个任务之后需要回溯
Node f[N][N]; // f[i][j]存储最优解,同时存储合并线索
int sum[N][N]; // sum[i][j] 表示从第 i 堆起,顺时针数j堆的石子总数
void Print(int i, int j) // 递归打印子序列f[i][j]的合并过程
{
int k, x;
if(j != 1) {
Print(i, f[i][j].d); // 倒推子序列 1 的合并过程
x = (i + f[i][j].d - 1)%n + 1;
Print(x, j - f[i][j].d); // 倒推子序列 2 的合并过程
for(k = 1; k = n; k++) // 输出当前合并第i堆和第x堆的方案
if(v[k] 0)
{
if(i == k || x == k) printf(-%d , v[k]); // -号表示这次操作合并该堆
else printf(%d , v[k]);
}
printf(\n);
v[i] = v[i] + v[x]; // 新堆的大小
v[x] = -v[x]; // 置为- 类似于删除
}
}
void Solve(int flag) // flag = 0求最小得分, flag = 1 求最大得分
{
int i, j, k, x, t, result;
for(i = 1; i = n; i++) // 仅含一堆石子的序列不存在合并
f[i][1].c = f[i][1].d = 0;
for(j = 2; j = n; j++) { // 顺推含2堆,3堆...n堆石子的各子序列的合并方案
for(i = 1; i = n; i++) {
t = sum[i][j];
if(flag == 0) f[i][j].c = oo; // 求最小得分,那么需要初始化为 oo
else f[i][j].c = 0; // 求最大得分,那么需要初始化为 0
for(k = 1; k = j-1; k++) {
x = (i + k - 1)%n + 1;
if((flag == 0 f[i][k].c + f[x][j-k].c + t f[i][j].c)
||(flag != 0 f[i][k].c + f[x][j-k].c + t f[i][j].c)) {
f[i][j].c = f[i][k].c + f[x][j-k].c + t;
f[i][j].d = k;
}
}
}
}
result = f[1][n].c; k = 1; // 在子序列f[1][n], f[2][n]...f[n][n]中寻找最优值
for(i = 2; i = n; i++)
if((flag == 0 f[i][n].c re
您可能关注的文档
最近下载
- 2025年包装机项目可行性分析报告.docx
- 云南省昭通市2025届中考 数学模拟试卷.docx VIP
- xxx30兆瓦特许权光伏电站职业病危害控制效评价报告书.doc VIP
- 八年级信息科技第一章《从感知到物联》单元整体教学设计.docx VIP
- 合同能源节能改造项目可行性研究报告.pdf VIP
- 票据业务知识培训课件.pptx VIP
- SEMI E30-1103(完整中文版本).pdf
- 05SFG04-钢结构装配式防倒塌棚架结构设计图集.pdf VIP
- 2018年下半年全国事业单位联考A类《综合应用能力》题及参考答案.pdf VIP
- 中国上海国际艺术节中心招聘笔试备考题库及完整答案详解1套.docx VIP
文档评论(0)