Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >赛程算法,每支球队打特定的比赛次数

赛程算法,每支球队打特定的比赛次数
EN

Stack Overflow用户
提问于 2012-12-20 03:40:51
回答 3查看 8K关注 0票数 1

我有一个特定的团队数量。我希望每支球队在4个指定的时间与4个不同的对手进行4场比赛。

复杂之处在于,任何球队都不能同时进行两场不同的比赛。例如,如果1队像这样比赛

team1与team2、team1与team3、team1与team4、team1与team5

那么team2已经占用了第一个时隙,所以team2可以像这样玩

(team2 vs team1)、team2 vs team3、team2 vs team4、team2 vs team5

但这里出现了问题,team3将与team1和team2一起在第二个时隙播放,这是不可能做到的。

我不知道这个算法可以叫什么,但我正在寻找实现这个算法的算法。

我进行了一次搜索,寻找循环赛和其他比赛,比如匹配算法和婚姻问题,但我认为我的问题不同。如果我错了,请纠正我。

任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

发布于 2012-12-20 05:10:40

我的结论是,如果团队数量是奇数,就没有解决方案。设N是团队的数量。我们需要一个N*4/2的比赛总数,每队四场比赛,但每场比赛计数为两支球队。要在四个时隙中进行N*2匹配,我们必须平均每个时隙的N/2匹配。我们一次最多只能进行floor(N/2)匹配。如果N是奇数,则返回floor(N/2) < N/2

一个仅适用于偶数N的解决方案(如果存在)会有用吗?

票数 3
EN

Stack Overflow用户

发布于 2017-10-20 18:42:05

此算法适用于任何数量的团队。

假设一场锦标赛有6支球队。

这个解决方案基本上告诉您如何填充6x6矩阵,矩阵中的每个条目都是行与列中的球队之间的匹配。

在算法中考虑一些规则

矩阵中的

  1. 增量值,从左到右,从上到下。mat[0][0] = 1
  2. Whenever i == j,然后填充[n-1][j]的矩阵,而不是[i][j]的矩阵。基本上,在i==j
  3. 中不会有条目,只要矩阵中的条目达到6,就会变成1

我们将遵循这条规则,从[0][0]开始逐列填充矩阵。意味着我们将首先填充第0列的每一行,然后移动到第一列,依此类推。

  • At [0][0],应用规则2。因此,填写mat[n-1][0] = 0
  • At mat[1][0],填写下一个数字ie 2,类似地,填写[2][0], [3][0], [4][0]

H124,现在第1列,从值2开始

  • mat[1][0] = 2;
  • mat[1][1]应用规则2,填充当前列的最后一行,即mat[n-1][1] = 3

F233

如果你希望每支球队只与其他球队进行一场比赛,那么可以使用下三角。

如果你想让每支球队和其他球队打两场比赛,一个主场和一个客场都使用下三角和上三角。

希望你们能理解我的解决方案。

干杯

票数 3
EN

Stack Overflow用户

发布于 2012-12-20 05:16:07

一个简单的算法:

代码语言:javascript
运行
AI代码解释
复制
Round 1
1  2  3  4
8  7  6  5

然后旋转2-8个位置...

代码语言:javascript
运行
AI代码解释
复制
Round 2
1  8  2  3
7  6  5  4

Round 3
1  7  8  2
6  5  4  3

http://en.wikipedia.org/wiki/Round-robin_tournament#Scheduling_algorithm

(如果有一个奇数,可以通过添加一个虚拟配对来扩展this,以表示再见,但正如Patricia Shanahan所指出的,并不是每个球队都会打每一轮比赛。因此,需要偶数个团队和至少六个团队才能满足要求。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13964948

复制
相关文章
微软的新技术使面部动作与语音片段更好同步
越来越多的研究表明,只要有足够大的语料库,几乎任何人的面部动作都可以与语音片段同步。今年6月,三星(samsung)的应用科学家详细介绍了一种端到端的模型,该模型能够在人的头颅中对眉毛、嘴、睫毛和脸颊进行动画处理。仅仅几周后,Udacity发布了一个系统,该系统可以从音频叙述中自动生成独立演讲视频。
AiTechYun
2019/10/10
5130
微软的新技术使面部动作与语音片段更好同步
使用时间特征使让机器学习模型更好地工作
来源: DeepHub IMBA本文约2300字,建议阅读8分钟在本文中,通过一个实际示例讨论如何从 DateTime 变量中提取新特征以提高机器学习模型的准确性。 特征工程是构建机器学习模型最重要的方面之一。在本文中,我将通过一个实际示例讨论如何从 DateTime 变量中提取新特征以提高机器学习模型的准确性。 从日期中提取特征 一些数据集提供了日期或日期时间字段,通常在为机器学习模型构建输入特征时会被删除(除非您正在处理时间序列,显然 😃)。 但是,DateTime 是可用于提取新特征的,这些新特征
数据派THU
2022/03/04
1.8K0
如何更好地提问
一个编程学习者,尤其是刚入门的初学者,在学习过程中必然会遇到各种问题,于是难免需要向人提问寻求解答。本编程教室开张以来,我也解答了非常多的提问。今天想就“提问”这件事情说说我的一点建议: 1.提问之前先尝试搜索 你的问题可能是千万人曾经遇到过的小问题,搜索引擎就可以回答你。谷歌是个好网站,实在不行百度一下你也可能知道。 2.尽可能清楚、准确、完整地描述你的问题 不要只把你不懂的地方拿出来问而不提及问题的前因后果,否则回答者可能无法明白你的问题。尽量客观描述问题,而不是只说自己的理解和假设。在客观描述的基础上
Crossin先生
2018/04/16
8110
怎样更好地阅读源码?
最近,为了提高团队成员技术水平,考察了大家源码阅读情况。作为第一期任务,选择了spring框架,范围是spring-beans,spring-context,spring-core,以及spring-web。考核方式为:了解spring框架作用、核心概念,并选择感觉最重要的几个类进行详细阐述。
程序员架构进阶
2021/03/16
4590
怎样更好地阅读源码?
如何更好地使用Kafka?
引言| 要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现)、故障时解决(有完整的应急预案)这三阶段。
从大数据到人工智能
2023/01/05
1.1K0
如何更好地使用Kafka?
如何更好地使用Kafka?
点个关注👆跟腾讯工程师学技术 引言| 要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现)、故障时解决(有完整的应急预案)这三阶段。 事先预防 事先预防即通过规范的使用、开发,预防问题产生。主要包含集群/生产端/消费端的一些最佳实践、上线前测试以及一些针对紧急情况(如消息积压等)的临时开关功能。 Kafka调优原则: 1.确定优化目标,并且定量给出目标(Kafka
腾讯云开发者
2022/11/28
1.1K0
如何更好地使用Kafka?
怎样更好地阅读源码?
最近,为了提高团队成员技术水平,考察了大家源码阅读情况。作为第一期任务,选择了spring框架,范围是spring-beans,spring-context,spring-core,以及spring-web。考核方式为:了解spring框架作用、核心概念,并选择感觉最重要的几个类进行详细阐述。
程序员架构进阶
2021/03/23
3780
如何更好地管理多云
一家全球50强制造商在全球范围内可能拥有非常复杂的供应链、制造地点和供应商关系,因此需要管理供应商、客户甚至内部组织之间流动的数据。但并不是每个人都能看到一切。制造商需要解决云计算供应商关系以及多云向其组织提出的问题。鉴于此,现在是决定挖掘多云潜力的时候了。
静一
2019/05/08
5750
如何更好地管理多云
如何更好地调整学习率
【GiantPandaCV导读】learning rate对模型调优重要性不言而喻,想到超参数调优第一个可能想到的方法就是网格搜索Grid Search,但是这种方法需要大量的计算资源。之前使用fastai的时候发现其集成了一个功能叫lr_finder(), 可以快速找到合适的学习率,本文就主要分析这个15年就提出来的技术Cyclical Learning Rates。
BBuf
2021/07/23
9410
如何更好地进行云迁移?
导语 根据调研机构Gartner公司的调查数据,未来五年将有超过1万亿美元的IT支出直接或间接地受到企业将业务转向云端的影响。许多研究公司指出,混合云是增长最快的市场。而MarketsandMarkets预测,从现在到2019年云计算的市场将以复合年增长率27%的速度增长。 如今,有一些工具和方法可以帮助企业的IT团队更好地了解他们的云基础架构的性能。 根据调研机构Gartner公司的调查数据,未来五年将有超过1万亿美元的IT支出直接或间接地受到企业将业务转向云端的影响。许多研究公司指出,混合云是增长最
静一
2018/03/28
1.1K0
如何更好地进行云迁移?
使goroutine同步的方法总结
在前面并发性能对比的文章中,我们可以看到Golang处理大并发的能力十分强劲,而且开发也特别方便,只需要用go关键字即可开启一个新的协程。
李海彬
2018/10/24
1.4K0
使goroutine同步的方法总结
使 WPF 支持触摸板的横向滚动
发布于 2017-11-23 13:25 更新于 2018-08-12 08:02
walterlv
2018/09/18
1.1K0
使 WPF 支持触摸板的横向滚动
安卓使ScrollView滚动到底部代码
scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部
全栈程序员站长
2022/07/15
1.2K0
Delphi语言_DELPHI
总结一下SQL语句中引号(‘)、quotedstr()、(”)、format()在SQL语句中的用法以 及SQL语句中日期格式的表示(#)、(”) 在Delphi中进行字符变量连接相加时单引号用(”’),又引号用(””)表示 首先定义变量 var AnInt:integer=123;//为了方便在此都给它们赋初值。虽然可能在引赋初值在某些情况下不对 AnIntStr:string=’456′; AStr:string=’abc’; AFieldName: string=’字符型编号’; ATableName: string=’YourTable’; ADate:Tdatetime=now; Adoquery1:tadoquery; 1,Delphi语句 adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 字符型编号=’abc’ and 整型编号=123′; 等价于 adoquery1.sql.text:= ‘select ‘+AFieldName+’ from ‘+ATableName+’ where ‘+AFieldName +’=”’+AStr+”’ and 整型编号=’+AnIntStr; 也等价于 adoquery1.sql.text:= ‘select ‘+AFieldName+’ from ‘+ATableName+’ where ‘+AFieldName +’=’+QuotedStr(AStr)+’ and 整型编号=’+Inttostr(AnInt); 传到数据库服务器为: select 字符型编号 from YourTable where 字符型编号=’abc’ and 整型编号=123 2,Delphi语句中日期表示 对于access数据库: adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 日期型字段=#2003-12-01#’; 等价于: adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 日期型字段=#’+FormatDateTime(‘yyyy-MM-dd’,now)+’#’; 传到服务器为: select 字符型编号 from YourTable where 日期型字段=#2003-12-01# 对于MSSQL数据库: adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 日期型字段=’2003-12-01”; 等价于: adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 日期型字段=”’+FormatDateTime(‘yyyy-MM-dd’,now)+””; 也等价于: 等价于: adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 日期型字段=’+QuotedStr(FormatDateTime(‘yyyy-MM-dd’,now)); 传到服务器为: select 字符型编号 from YourTable where 日期型字段=’2003-12-01′ 日期字段还可以这样表示 Delphi语句 adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 日期型字段>=’+QuotedStr(FormatDateTime(‘yyyy-MM-dd’,now)) +’ and 日期型字段<=’+QuotedStr(FormatDateTime(‘yyyy-MM-dd’,now+1));//明天 等价于 adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 日期型字段 between ‘+QuotedStr(FormatDateTime(‘yyyy-MM-dd’,now)) +’ and ‘+QuotedStr(FormatDateTime(‘yyyy-MM-dd’,now+1)); 如果用 adoquery1.sql.add(); 形式又如何操作?请用Insert语句示例 adoquery1.sql.add(‘ insert into ‘+AtableName); adoquery1.sql.add(‘ ( ‘+AFieldName+’)’); a
全栈程序员站长
2022/11/02
1.7K0
Python工匠:如何更好地使用变量
编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。
腾讯NEXT学位
2019/05/16
1K0
vscode 使水平滚动条固定持续显示
1、在编辑器窗口中键盘 ctrl/command + shift + p 2、输入 setting,打开设置(json) 3、在 JSON 文件中加入以下代码:
Leophen
2022/05/07
2.5K0
企业如何更好地制定大数据策略
大数据策略会失败吗?是时候该讨论一下这个问题了。企业才刚刚掌握如何集成ERP(企业资源规划)及其他业务应用来消除业务流程中妨碍效率的孤岛。面向服务架构、软件即服务、云计算及其他现代化解决方案在协助企业实现大型应用集成过程中都发挥了一定的作用。但是如今,在大量数据的环境中组织正面临新的一系列挑战。更清楚地说,它不是一条数据流。它是由许多独立的数据流组成的,使数据互相分离或者就像以前的企业应用那样将孤立起来。 这不是因循守旧 这些数据中有许多都不像那些企业用处理的数据那样。在大规模结构化数据环境
静一
2018/03/16
6710
如何使背景照片覆盖全屏不会随屏幕滚动
html 中 css 中 使背景照片覆盖全屏 body,html{ background: url(../img/index.png); background-repeat: no-repeat; background-size: 100% 100%; background-attachment: fixed; }
江一铭
2022/06/16
1.6K0
iOS蓝牙开发如何更好地收发数据
3月中旬跳槽了,一直在新公司「填坑」,看着「先人」写的代码,觉得是有改善空间的,所以这次想聊下这部分内容——iOS蓝牙开发中如何更好地更好地收发数据。
iOS Development
2019/02/14
2.9K0
点击加载更多

相似问题

delphi Fire猴子中FPS的计算

13

Delphi Fire猴子没有正确显示字体

14

Delphi Fire猴子-运行时加载样式

213

DLL中的FMX表单(Fire猴子/delphi)

13

delphi/Fire猴子:如何在活动中实现回调?

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档