求一个算法实现(用于体育比赛的两两对战)

xueyou98 2015-08-04 10:25:24
在打比赛中,有N支队伍,实现两两比赛.比赛规则如下:

假如有3只比赛队伍,分别为1队,2队,3队.则共需要打

1队 ----

2队 --- 3队

--------------------------然后共需要打3场----
(第一场)
1队 --- (轮空)
2队 --- 3队

----------------(第二场)----
将阵型看着是一个圆,逆时针旋转

1队 --- 3队
2队 --- (轮空)

-----------------(第三场)---

3队 --- (轮空)
1队 --- 2队

--------------至些结束--------------------


再例如:如果一共有8只队伍

则队形排列如下:

1队     8队
2队     7队
3队     6队
4队     5队

----开始比赛:第一场-----

1队 --- 8队
2队 --- 7队
3队 --- 6队
4队 --- 5队

------第二轮-----

1队 --- 7队
8队 --- 6队
2队 --- 5队
3队 --- 4队

-----第三轮-----
1队 --- 6队
7队 --- 5队
8队 --- 4队
2队 --- 3队

-----第四轮-----
1队 --- 5队
6队 --- 4队
7队 --- 3队
8队 --- 2队

.............


这是一个体育竞争上的一个算法,输入队伍数量,得出一共需要多少场比赛,比赛阵列对阵图,求算法及实现
 
...全文
799 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
拜一刀 2015-08-04
  • 打赏
  • 举报
回复
大学时好像讲过....
於黾 2015-08-04
  • 打赏
  • 举报
回复
算多少场容易,排列组合公式一算就行了 要出对阵表,就必须遍历,穷举
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_8e7c33e90100znqf.html 对着java版改,net版块以前有人问过这个问题,但不高兴找了
  • 打赏
  • 举报
回复
你去买一本大学教材 《概率论与数理统计》看看里面的排列组合的介绍 其实你要的就是求C(N, 2), 即从N支队伍只任取两支队伍的所有组合 另外有公式, C(n,m)=P(n,m)/m! 其中m!表示m的阶乘,P(n,m)则是n个对象中取m个的全排列 P(n,m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)! 当N为8时就是 C(8,2) =8!/6!/2!= 8*7/2=28 因为m是固定为2(比赛由两只队伍进行),所以你这里 C(N,2)=N*(N-1)/2
於黾 2015-08-04
  • 打赏
  • 举报
回复
引用 5 楼 wanghui0380 的回复:
这玩意标准叫法叫“双循环淘汰值” so,看见这个名字“双循环淘汰值”你有啥想法木有??如果木有,就太可惜了
这明显不是双循环,而是单循环 因为1和3只比一场,不分主客场,所以循环的时候,全部都要向后匹配,而不要向前匹配
wanghui0380 2015-08-04
  • 打赏
  • 举报
回复
这玩意标准叫法叫“双循环淘汰值” so,看见这个名字“双循环淘汰值”你有啥想法木有??如果木有,就太可惜了
暖枫无敌 2015-08-04
  • 打赏
  • 举报
回复

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧