多目标的距离之和最小问题.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多目标的距离之和最小问题精要

算法与数据结构设计报告 ( 2015 / 2016 学年 第 二 学期) 题 目: 多目标的距离之和最小问题 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 日 期 评 分 细 则 评分项 优秀 良好 中等 差 遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计 报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度 评分等级 评分等级选择:优秀、良好、中等、及格、不及格 教师签名: 年 月 日 课题名称 多目标的距离之和最小问题据 课题内容和要求 【问题描述】 小明正在玩《文明III》游戏,现在他有n个洲际导弹(简称ICBM)。他需要在最短的时间内,用这n个ICBM摧毁敌方n个目标(1个ICBM只能摧毁1个目标)。n个ICBM和目标的位置不一定相同,小明觉得给每个ICBM确定目标是一件很麻烦的事情。请你编程帮助小明给每个ICBM确定目标,使每个ICBM到其目标的距离之和最小。 输入: 第一行:n (n=12) 第2到n+1行:x,y 说明:每一行包含一个坐标(x,y),表示一个ICBM,-10000x,y10000,且x,y为整数。 第n+2到2n+1行:x,y 说明:每一行包含一个坐标(x,y),表示一个目标,-10000x,y10000,且x,y为整数。 输出: 仅一行:min 说明:min是每个ICBM到其目标距离之和的最小值。结果保留3位小数。 sample input: 2 1 1 -1 -1 -2 -2 2 2 sample output: 2.828 需求分析概要设计 五、详细设计 #include stdio.h #include string.h #include math.h #include stdlib.h #include math.h #define M 500 #define inf 0x3f3f3f3f int n,nx,ny;//nx,ny分别为x点集y点集的个数 int link[M],slack[M]; int visx[M],visy[M]; double x[M][3],y[M][3],w[M][M],lx[M],ly[M]; //lx,ly为可行顶标, int DFS(int x)//dfs增广路 { visx[x] = 1; for (int y = 1;y = ny;y ++) { if (visy[y]) continue; int t = lx[x] + ly[y] - w[x][y]; if (t == 0) // { visy[y] = 1; if (link[y] == -1||DFS(link[y])) { link[y] = x; return 1; } } else if (slack[y] t) //不在相等子图中slack 取最小的 slack[y] = t; } return 0; } double KM() { int i,j; memset (link,-1,sizeof(link)); memset (ly,0,sizeof(ly)); for (i = 1;i = nx;i ++) //lx初始化为与它关联边中最大的 for (j = 1,lx[i] = -inf;j = ny;j ++) if (w[i][j] lx[i])

文档评论(0)

586334000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档