题目:

设有N个运动员要进行网球循环赛,设计一个满足以下要求的比赛日程表

(1)每个选手必须与其他n-1个选手各赛一次

(2)每个选手一天只能赛一次

(3)当n是偶数,循环赛进行n-1天,当n是奇数,循环赛进行n天。

思路分析:

如果n是奇数,其实就等于n+1种情况下将第n+1号选手轮空。所以只要考虑n是偶数的情况。用分治的思想来做,转换成n/2的子问题。考虑两种情况:

一、n/2为偶数。这种情况比较简单。例如n=4时。

1 2 3 4

2 1 4 3

3 4 1 2

4 3 2 1

可由n=2的子问题推出。

1 2               1 2 3 4

2 1               2 1 4 3

1 2         3 4               3 4 1 2

2 1  -->4 3    -->      4 3 2 1

第一次变换下半部分=上半部分+n/2,第二次沿对角线对称。

二、n/2为奇数。由于n/2是奇数,子问题考虑n/2+1的情况。怎么由n/2+1的情况推出n的情况?

例如n=6时。先考虑它的子问题n=4时

1 2 3 4

2 1 4 3

3 4 1 2

4 3 2 1

由于四号选手是非法的所以:

1 2 3 0

2 1 0 3

3 0 1 2

同理推出

1 2 3 0

2 1 0 3

3 0 1 2

4 5 6 0

5 4 0 6

6 0 4 5

对第四列(第三天),只有一号选手和四号选手没比赛,那就让他们比。推出

1 2 3 4

2 1 5 3

3 6 1 2

4 5 6 1

5 4 2 6

6 3 4 5

之后的两天,考虑为比过的两位选手比赛就行了。比赛的顺序按未比赛的后几个选手顺序取模。例如前三天出现了4那后两天为5 6。前三天出现了5后两天为6 4。

如此处理即可得到

1 2 3 4 5 6

2 1 5 3 6 4

3 6 1 2 4 5

4 5 6 1 2 3

5 4 2 6 3 1

6 3 4 5 1 2

#include

#include

#include

#include

using namespace std;

int mp[1100][1100];

void dfs(int n)

{

if(n==1)

{

mp[1][1]=1;

return ;

}

if(n&1) n++;

int t=n/2;

dfs(t);

for(int i=1;i<=t;i++)

for(int j=1;j<=t+1;j++)

{

if(mp[i][j]>t)

{

mp[i+t][j]=i;

mp[i][j]=i+t;

int c=i+t+1;

for(int k=t+2;(t&1)&&k<=n;k++,c++)

{

if(c==i+t) c++;

if(c>n) c-=n/2;

mp[i][k]=c;

mp[c][k]=i;

}

}

else

{

mp[i+t][j]=mp[i][j]+t;

if((t%2==0)||t==1)

{

mp[i+t][j+t]=mp[i][j];

mp[i][j+t]=mp[i+t][j];

}

}

}

}

int main()

{

int n;

while(~scanf("%d",&n))

{

memset(mp,0,sizeof(mp));

if(n&1) dfs(n+1);

else dfs(n);

for(int i=1;i<=n;i++)

{

for(int j=1;j<=n+(n&1);j++)

{

cout<n?0:mp[i][j]);

cout<

}

cout<

}

cout<

}

}

网球循环赛分治算法c语言,【算法作业】 循环赛问题 分治算法相关推荐

  1. 【数据结构与算法——C语言版】1. 数据结构与算法简介

    概念 数据结构:"一组数据的存储结构" 算法:"操作数据的一组方法" 数据结构是为算法服务的,算法是要作用再特定的数据结构上的. 简言之,在编程实践中,我们可能 ...

  2. php 红包算法,PHP语言:实现微信红包拆分算法

    本文主要向大家介绍了PHP语言:实现微信红包拆分算法,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. · 修复最后一个红包输出未保留2位数 · 修复领取的红包金额低于最小红包限制 * 红 ...

  3. 人工免疫算法c语言实例,毕业设计_蚁群算法模拟系统的设计与实现.doc

    J I A N G S U U N I V E R S I T Y 本 科 毕 业 论 文 蚁群算法模拟系统的设计与实现 Ant Colony Simulation System Design and ...

  4. 栅格法路径算法C语言,基于地图栅格与QPSO算法结合的机器人路径规划方法与流程...

    本发明属于机器人路径规划领域,提出一种基于地图栅格与QPSO结合的机器人路径规划方法. 背景技术: 移动机器人路径规划是寻找一条无碰撞的可行路径问题的方法.近些年,群智能优化算法逐渐成为移动机器人路径 ...

  5. 机械臂运动学算法c语言,6轴工业机械臂运动学算法(C++) 六轴机械臂运动学源码 - 下载 - 搜珍网...

    6轴工业机械臂运动学算法 6轴工业机械臂运动学算法\.cproject 6轴工业机械臂运动学算法\.project 6轴工业机械臂运动学算法\.settings 6轴工业机械臂运动学算法\.setti ...

  6. 极值跟踪算法 c语言,快速约束极值子空间跟踪算法_魏志强.pdf

    快速约束极值子空间跟踪算法_魏志强 34 4 Vol. 34 No. 4 第 卷第 期 华 北 水 利 水 电 学 院 学 报 2013 8 Journal of North China Instit ...

  7. pbkdf2 算法 C语言实现,密码学基础之PBKDF2算法

    站点登录需要输入用户名和密码,而密码属于个人敏感数据,应当只保存密码的单向哈希值.简单的哈希值,无法防止彩虹表攻击,使用基于口令的密钥派生算法PBKDF2可以解决这种问题. PBKDF2 需要以下输入 ...

  8. 快速pow算法c语言_嵌入式必知基础算法(二)

    七.二分法 在一个数组中,知道一个数值,想确定他在数组中的位置下标,如数组:A[5] = {1,2,6,7,9};我知道其中的值为6,那么他的下标位置就是3. 八.限幅滤波法 对于随机干扰 , 限幅滤 ...

  9. c语言顺序查找算法,c语言实现排序和查找所有算法

    c语言版排序查找完成,带详细解释,一下看到爽,能直接运行看效果. /* Note:Your choice is C IDE */ #include "stdio.h" #inclu ...

  10. 异或校验算法 c语言程序,C# 异或校验算法

    C# 的异或校验算法 直接上代码 public partial class FormCRC : Form { public FormCRC() { InitializeComponent(); } p ...

最新文章

  1. Git各指令的本质,真是通俗易懂啊
  2. python多线程网络编程_python之网络编程-多线程
  3. 等式约束和不等式约束下的KKT条件求法
  4. Java Singleton设计模式
  5. 我喜欢的一首歌--《幸福的瞬间》
  6. Mysql count 的多种使用方式性能比较
  7. iframe内容适应div大小_使用lt;iframegt;方式在WordPress中插入视频并自适应屏幕尺寸
  8. /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory 报错解决
  9. 剑指offer面试题[41]-和为s的两个数VS和为s的连续正数序列
  10. CSS3 详细新增内容
  11. HTML5程序设计 SVG
  12. php有的图片显示不出来,图片显示不出来,但是数据库里有显示
  13. 翻页电子书/电子画册制作工具
  14. 计算机ppt实验报告总结怎么写,ppt实验报告总结.doc
  15. 第三只眼与另一个世界
  16. 苹果怎么换行打字_通过这 684 关小游戏,你的打字速度可以赢过专业录入员
  17. 怎样使用NetFlow分析网络异常流量一
  18. 乔迁之喜!泛微软件园启用,欢迎新老朋友来坐坐
  19. 图像中的天空区域检测!
  20. 【ROS】Ubuntu18.04 + ROS操作系统安装

热门文章

  1. 时空AI技术:利用轨迹数据全方面「监测」路网交通状态
  2. 造车新势力包揽2家,IDG资本投资的小鹏汽车市值超1026亿!
  3. 高工拆解|小鹏汽车三代座舱主机平台,从TI到高通
  4. Reason : image not found
  5. Qt5基础 Qimage与QPixmap的转换
  6. Android performClick无效
  7. leetcode:井字游戏
  8. Apache strtus2深入精讲-王磊-专题视频课程
  9. 解决常见 ××× 连接 错误619
  10. 幽灵交易策略_千万级 交易商 独家 策略 开盘区间 突破 PZ Stretch 指标