运动员最佳配对问题(回溯)
羽毛球队有男女运动员各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]。设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。 算法设计:设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。
数据输入:第一行有1个正整数n(1≦n≦20〉。接下来的2n行,每行n个数。前n行是p,后n行是q。 结果输出:将计算的男女双方竞赛优势的总和的最大值输出到文件output.txt。
输入文件示例 输出文件示例
input.txt output.txt
3 52
10 2 3
2 3 4
3 4 5
2 2 2
3 5 3
4 5 1
算法思想:排列树问题,重新开辟一个数组记录女运动员或者男运动员,对其进行全排列,到回溯到最后一行时将得到的值与之前已得到的最大值进行比较,如果大于之前的最大值,则进行更新
参考代码如下:
#include<stdio.h>
#include<stdlib.h>#define N 100
int n;
int P[N][N],Q[N][N];
int x[N];
int opt[N];
int tempValue=0,maxValue=0;void compute(){tempValue = 0;for(int i=1;i<=n;i++){tempValue += P[i][x[i]]*Q[x[i]][i];}if(tempValue>maxValue){maxValue = tempValue;for(int i=1;i<=n;i++){opt[i] = x[i];}}
}void traceback(int t){int i,j,temp;if(t>n){compute();}for(i=t;i<=n;i++){temp = x[i];x[i] = x[t];x[t] = temp;traceback(t+1);temp = x[i];x[i] = x[t];x[t] = temp; }
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){x[i] = i;} for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&P[i][j]);}} for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&Q[i][j]);}} traceback(1); printf("%d\n",maxValue);for(int i=1;i<=n;i++){printf("%d------%d\n",i,opt[i]);}return 0;
}
运动员最佳配对问题(回溯)相关推荐
- java运动员最佳配对_运动员最佳配对问题 - osc_y1pyjby5的个人空间 - OSCHINA - 中文开源技术交流社区...
这道题可以看为排列数的一个典型模块 一.算法实现题: 1.问题描述: 羽毛球队有男女运动员各n人,给定2个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势:Q ...
- 运动员最佳匹配问题【回溯算法】
Problem Description 羽毛球队有男女运动员各n 人.给定2 个n×n 矩阵P 和Q.P[i][j]是男运动员i 和女运动员j配对组成混合双打的男运动员竞赛优势:Q[i][j]是女运动 ...
- 程序基本算法习题解析 设计一个算法,计算男女运动员最佳配对方案,使各组男女双方竞赛优势的总和达到最大。
题目: 羽毛球队有男女运动员各n人.给定2个n*n矩阵P和Q.P[i][j]是男运动员i和女运动员j,配对组成混合双打的男运动员竞赛优势,Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势. ...
- 运动员最佳匹配问题(详解)
一.问题描述 羽毛球队有男女运动员各n人.给定2个n×n矩阵P和Q. P[i][j]是男运动员i的女运动员j配对组成混合双打的男运动员竞赛优势:Q[i][j]是女运动员i和男运动员j配对的女运动员竞赛 ...
- 辽宁师范大学计算机科学技术与,王相海 - 辽宁师范大学 - 计算机与信息技术学院...
近期论文 查看导师最新文章 (温馨提示:请注意重名现象,建议点开原文通过作者单位确认) [1]硕士论文:"体元"纹理真实感生成研究,吉林大学,1995.6. [2]博士论文:三角B ...
- 算法设计之五大常用算法设计方法总结
算法设计之五大常用算法设计方法总结 一.[分治法] 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再 ...
- 2017年下半年软件设计师选择题
''' 2019.5.10 ''' (1) 八进制表示方法由数字0开头,十六进制由数字0加小写字母x开头 (2) 存储 只读存储器(ROM)存储的内容是固定不变的,只能读出而不能写入的半导体存储器 读 ...
- 工作分配问题【回溯算法】
Problem Description 设有n件工作分配给n个人.将工作i分配给第j个人所需的费用为 c i j c_{ij} cij.试设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到 ...
- c语言最短加法链问题回溯法,《回溯法习题》PPT课件.ppt
1,课程安排,第5章 回溯法习题课,3,第5章 回溯法习题,子集和问题 最小长度电路板排列问题 最小重量机器设计问题 运动员最佳匹配问题 无分隔符字典问题 无和集问题 n色方柱问题 整数变换问题 拉丁 ...
- 【算法导论07】回溯法-旅行售货员问题
07回溯法-旅行售货员问题 问题描述: 已知有m个城市,城市之间由n条不同长度的道路相连.一个售货员从一座城市出发,途径所有城市,并最终回到原点,设计算法计算售货员所走的最短路径结点. 问题分析: 从 ...
最新文章
- 【 转 】Keepalived工作原理
- j2me学习三_LCDui类学习(2)
- Linux -- Samba用户认证
- 随手能做194个实验,不呆板,轻松撬动大智慧
- 组合命令行生成工具pict
- 毕设项目 - 基于SSM的个人健康信息管理系统(含源码+论文)
- u盘写保护+计算机管理,取消u盘写保护的操作方法-电脑自学网
- Music Radio Beta-Perview 1.0.0.0.(做了一个听音乐电台的东东.:)
- Hive MetaStore java.lang.NoClassDefFoundError: com/facebook/fb303/FacebookService$Iface
- CC2640R2F学习笔记二:昇润科技开发资料阅读
- 女博士实名举报长江学者陈小武性骚扰女学生
- Java实现简单注册登录等功能
- 哲♂学【前排提醒非题解】
- 给初学和业余学习中医的朋友
- 使用android手机做鼠标
- Excel 中连续生成开始日期和结束日期之间的日期
- JavaScript代码具体是怎么引入到HTML中的?
- 快递100 home.html代码
- 使用linux 中的 tree 指定显示深度,显示文件目录结构
- 噪声为什么是高频信号_人类是信号,但科技将我们视为噪音
热门文章
- Vue.js数据双向绑定原理与实现
- 阿里云服务器mysql建表_如何在阿里云服务器上搭建MySQLl服务(最新版)
- iptables默认规则
- 不论你在世界上哪个地方,这些数据科学实习都是为你准备的
- 2020年7月份六级翻译必考词汇(有关新冠肺炎)
- YOLOv8原理深度解读,超级详细
- Linux | Linux使用互斥锁及条件变量替代信号量
- java计算机毕业设计-心理健康管理-源程序+mysql+系统+lw文档+远程调试
- mysql对应教师所排课数_计算中心教师排课系统的设计与实现
- Fiona地理数据引擎Python库