【算法】网球循环赛比赛日程表
设有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;
}
【算法】网球循环赛比赛日程表相关推荐
- c语言网球循环赛,网球循环赛比赛日程表n为奇数问题
初衷 在教材上看到这个问题的时候,对于奇数的处理百思不得其解,然而网上的答案要么就是n=2k的状况,要么就是本身根本都没有理解,给你讲了一大堆,各类状况,很麻烦,甚至有些是错的误人子弟.因此写下这篇思 ...
- 用递归与分治策略求解网球循环赛日程表_算法设计:分治法(比赛日程安排)...
一.算法思路 1.思路 分治算法的思想是:对于一个规模位N的问题,若该问题可以容易解决(比如规模N较小),则直接解决,否则将其分解为M个规模较小的子问题,这些子问题互相独立,并且与原问题形式相同,递归 ...
- 递归与分治策略算法之循环赛日程表
递归与分治策略算法之循环赛日程表 1.先简单的来介绍一下分治策略的思想 分治策略的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,分解出来的子问题与原问题相同,并且相互独立.通过递归去解决子 ...
- 分治法【锦标赛问题:设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次; (3)循环赛一共进行n-1天。】
目 录 1.问题 2.问题分析 3.程序代码(非递归) 4.程序代码(递归) 5.总结 1.问题 锦标赛问题:设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次: ( ...
- c语言-网球循环赛日程表
网球循环赛日程表 问题描述: 设有n个运动员要进行网球循环赛.设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次. (2)每个选手一天只能赛一次 (3)当n是偶数时循环赛 ...
- python实现循环赛日程表问题的算法_循环赛日程表的分治算法实现实验报告gxl.doc...
循环赛日程表的分治算法实现实验报告gxl PAGE PAGE 2 深 圳 大 学 实 验 报 告 课程名称: 算法设计与分析 实验项目名称: 分治算法 --矩阵相乘的Strassen算法及时间复杂性分 ...
- python实现循环赛日程表问题的算法_循环赛日程表的分治算法实现实验报告_gxl.doc...
循环赛日程表的分治算法实现实验报告_gxl 深 圳 大 学 实 验 报 告 课程名称: 算法设计与分析 实验项目名称: 分治算法 --矩阵相乘的Strassen算法及时间复杂性分析 或--循环赛日程表 ...
- 网球循环赛分治算法c语言,【算法作业】 循环赛问题 分治算法
题目: 设有N个运动员要进行网球循环赛,设计一个满足以下要求的比赛日程表 (1)每个选手必须与其他n-1个选手各赛一次 (2)每个选手一天只能赛一次 (3)当n是偶数,循环赛进行n-1天,当n是奇数, ...
- python【数据结构与算法】循环赛日程表(分治)
文章目录 1 概述 2 解决 1 概述 设计一个满足以下要求的比赛日程表: 每个选手必须与其他n-1个选手各赛一次: 每个选手一天只能赛一次: 循环赛一共需要进行n-1天. 由于n=2^k个运动员,显 ...
- 算法:循环赛日程表_一般化(n可以为奇数,也可以为偶数)
算法思路: 算法思路(N可能为奇数,也可能是偶数)总体思路:按分治策略,将所有分为两半,n个选手可以通过n/2个选手设计的比赛日程表来决定.递归地用一分为二的略对选手进行分割,直到只剩下两个选手.对于 ...
最新文章
- 迪士尼又出黑科技,可将自然语言脚本转化为VR视频
- python上下文管理关键字_[宜配屋]听图阁
- 自己实现苹果安装app动画
- html5 --- 特性检测
- 中兴通讯徐子阳:不破不立 用“加减乘除”建理想5G
- mysql是bsd协议吗_freebsd下实现mysql的自动备份
- 5-3 面向可维护性的构造技术
- threejs 模型隐藏后不显示_教师资格证面试报名后显示“待审核”?不做这一步报名白费!...
- java源码社团管理系统_基于jsp的社团管理系统-JavaEE实现社团管理系统 - java项目源码...
- 谷歌支付服务端服务账号订单校验
- angular 单击和双击事件分开
- 想找好用的录屏软件看这里,简单实用。手把手教你高清录屏技巧
- 为什么总是封板又打开涨停_多次涨停多次被打开,涨停板打开然后封住反复
- java tracert_tracert详解
- Error running ‘Tomcat8.5‘ port out of range-1 (moments ago)
- switch之enum
- html关于图片缓慢放大
- linux 信号signum.h SIGINT SIGUSR1 SIGUSR2
- 名帖380 张弼 草书《草书帖选》
- EasyRecovery2022电脑文件文档数据恢复软件