设有n=2k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:每个选手必须与其他n-1个选手各赛一次,每个选手一天只能赛一次,循环赛一共进行n-1天。

解题思路:

递归地用这种二分法的策略对选手进行划分,直到只剩下两个选手。 8个选手的比赛日程表,将左上角小块中的所有数字按其相对位置抄到右下角,又将左下角小块中的所有数字按其相对位置抄到右上角

#include <iostream>
#include <algorithm>
using namespace std;
int a[1001][1001];void Table(int k)  {  int m = 1,n;  n=1;    for(int i=1; i<=k; i++)  n *= 2; for(int i=1; i<=n; i++)  a[1][i]=i;for(int s=1; s<=k; s++)  {  n /= 2;  for(int t=1; t<=n; t++)  {  for(int i=m+1; i<=2*m; i++){  for(int j=m+1; j<=2*m; j++) {  //右下角等于左上角的值  a[i][j+(t-1)*m*2] = a[i-m][j+(t-1)*m*2-m]; //左下角等于右上角的值  a[i][j+(t-1)*m*2-m] = a[i-m][j+(t-1)*m*2];}       }  }  m *= 2;  }
}
void Display(int k){int n;n=1;    for(int i=1; i<=k; i++)  n *= 2; for(int i=1; i<=n; i++)  {  for(int j=1; j<=n; j++){  cout<<a[i][j]<<" ";  }  cout<<endl;  }
}int main() { int k,n; cout<<"请输入k:"; cin>>k;Table(k);cout<<"循环赛事日程表为:"<<endl;  Display(k); return 0;
}

【算法】网球循环赛比赛日程表相关推荐

  1. c语言网球循环赛,网球循环赛比赛日程表n为奇数问题

    初衷 在教材上看到这个问题的时候,对于奇数的处理百思不得其解,然而网上的答案要么就是n=2k的状况,要么就是本身根本都没有理解,给你讲了一大堆,各类状况,很麻烦,甚至有些是错的误人子弟.因此写下这篇思 ...

  2. 用递归与分治策略求解网球循环赛日程表_算法设计:分治法(比赛日程安排)...

    一.算法思路 1.思路 分治算法的思想是:对于一个规模位N的问题,若该问题可以容易解决(比如规模N较小),则直接解决,否则将其分解为M个规模较小的子问题,这些子问题互相独立,并且与原问题形式相同,递归 ...

  3. 递归与分治策略算法之循环赛日程表

    递归与分治策略算法之循环赛日程表 1.先简单的来介绍一下分治策略的思想 分治策略的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,分解出来的子问题与原问题相同,并且相互独立.通过递归去解决子 ...

  4. 分治法【锦标赛问题:设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次; (3)循环赛一共进行n-1天。】

    目   录 1.问题 2.问题分析 3.程序代码(非递归) 4.程序代码(递归) 5.总结 1.问题 锦标赛问题:设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次: ( ...

  5. c语言-网球循环赛日程表

    网球循环赛日程表 问题描述: 设有n个运动员要进行网球循环赛.设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次. (2)每个选手一天只能赛一次 (3)当n是偶数时循环赛 ...

  6. python实现循环赛日程表问题的算法_循环赛日程表的分治算法实现实验报告gxl.doc...

    循环赛日程表的分治算法实现实验报告gxl PAGE PAGE 2 深 圳 大 学 实 验 报 告 课程名称: 算法设计与分析 实验项目名称: 分治算法 --矩阵相乘的Strassen算法及时间复杂性分 ...

  7. python实现循环赛日程表问题的算法_循环赛日程表的分治算法实现实验报告_gxl.doc...

    循环赛日程表的分治算法实现实验报告_gxl 深 圳 大 学 实 验 报 告 课程名称: 算法设计与分析 实验项目名称: 分治算法 --矩阵相乘的Strassen算法及时间复杂性分析 或--循环赛日程表 ...

  8. 网球循环赛分治算法c语言,【算法作业】 循环赛问题 分治算法

    题目: 设有N个运动员要进行网球循环赛,设计一个满足以下要求的比赛日程表 (1)每个选手必须与其他n-1个选手各赛一次 (2)每个选手一天只能赛一次 (3)当n是偶数,循环赛进行n-1天,当n是奇数, ...

  9. python【数据结构与算法】循环赛日程表(分治)

    文章目录 1 概述 2 解决 1 概述 设计一个满足以下要求的比赛日程表: 每个选手必须与其他n-1个选手各赛一次: 每个选手一天只能赛一次: 循环赛一共需要进行n-1天. 由于n=2^k个运动员,显 ...

  10. 算法:循环赛日程表_一般化(n可以为奇数,也可以为偶数)

    算法思路: 算法思路(N可能为奇数,也可能是偶数)总体思路:按分治策略,将所有分为两半,n个选手可以通过n/2个选手设计的比赛日程表来决定.递归地用一分为二的略对选手进行分割,直到只剩下两个选手.对于 ...

最新文章

  1. 迪士尼又出黑科技,可将自然语言脚本转化为VR视频
  2. python上下文管理关键字_[宜配屋]听图阁
  3. 自己实现苹果安装app动画
  4. html5 --- 特性检测
  5. 中兴通讯徐子阳:不破不立 用“加减乘除”建理想5G
  6. mysql是bsd协议吗_freebsd下实现mysql的自动备份
  7. 5-3 面向可维护性的构造技术
  8. threejs 模型隐藏后不显示_教师资格证面试报名后显示“待审核”?不做这一步报名白费!...
  9. java源码社团管理系统_基于jsp的社团管理系统-JavaEE实现社团管理系统 - java项目源码...
  10. 谷歌支付服务端服务账号订单校验
  11. angular 单击和双击事件分开
  12. 想找好用的录屏软件看这里,简单实用。手把手教你高清录屏技巧
  13. 为什么总是封板又打开涨停_多次涨停多次被打开,涨停板打开然后封住反复
  14. java tracert_tracert详解
  15. Error running ‘Tomcat8.5‘ port out of range-1 (moments ago)
  16. switch之enum
  17. html关于图片缓慢放大
  18. linux 信号signum.h SIGINT SIGUSR1 SIGUSR2
  19. 名帖380 张弼 草书《草书帖选》
  20. EasyRecovery2022电脑文件文档数据恢复软件

热门文章

  1. 系统的延时任务和定时任务
  2. 如何在word中像LaTex那样打公式
  3. 解决:RN和H5之间通信
  4. Chrome屏蔽广告
  5. unapp Error: Unbalanced delimiter found in string
  6. 推荐几个选择时间.日期的免费插件 js
  7. k8s多master集群拓扑
  8. c语言绝对值大小并输出原值,c语言中绝对值大小的比较
  9. 全面解读“数字孪生”
  10. 推荐几个适合上班摸鱼的神操作!