最佳运动员问题.doc

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

算法设计与分析 课程设计 题目: 最佳运动员问题 姓名: 班级: 学号: 日期: 一、算法问题描述 羽毛球队有男女运动员各n人。给定2 个n×n矩阵P和Q。P[i][j]是男运动员i和女运 动员j配对组成混合双打的男运动员竞赛优势;Q[i][j]是女运动员i和男运动员j配合的女运 动员竞赛优势。由于技术配合和心理状态等各种因素影响,P[i][j]不一定等于Q[j][i]。男运 动员i和女运动员j配对组成混合双打的男女双方竞赛优势为P[i][j]*Q[j][i]。 设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。 二、算法问题形式化表示 编程任务: 设计一个算法,对于给定的男女运动员竞赛优势,计算男女运动员最佳配对法,使各组 男女双方竞赛优势的总和达到最大。 三、期望输入与输出 输入: 由文件input.txt给出输入数据。第一行有1 个正整数n (1≤n≤20)。接下来的2n行,每行n个数。前n行是p,后n行是q。 输出: 将计算出的男女双方竞赛优势的总和的最大值输出到文件output.txt。 四、算法分析与步骤描述 static class HeapNode implements Comparable{ int s,val; int[] r; HeapNode(int ss,int v,int[] rr){ s = ss; r = rr; for(int i=0;i=n;i++) r[i]=i; } void compute(int ii){ int temp = 0; for(int i= 1;iii;i++){ temp+=p[i][r[i]]*q[r[i]][i]; val = temp; } } public int compareTo(Object x){ int xv = ((HeapNode)x),val; if(valxv) return -1; if(val==xv) return 0; return 1; } } static int n,best=0; static int []bestr; static int[][] p; static int[][] q; static MaxHeap heap = new MaxHeap(); static int getbest(){ HeapNode E = new HeapNode(0,0,new int[n+1]); while(true){ if(E.s==n-1){ if(E.valbest){ bestr=E.r; best=E.val; }else{ for(int i=E.s+1;i=n;i++){ HeapNode N = new HeapNode(E.s+1,E.val.new int[n+1]); for(int j=1;j=n;j++) N.r[j] = E.r[j]; N.r[N.s]=E.r[i]; N.compareTo(N.s); heap.put(N); } } if(heap.isEmpty()) return best; E=(HeapNode)heap.removeMax(); } } } 五、问题实例及算法运算步骤 1.堆结点元素类型是HeapNode解运动员最佳配对问题的优先队列式分支限界法 七、算法复杂度分析 算法的时间复杂度为:

文档评论(0)

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

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

1亿VIP精品文档

相关文档