7-8 循环日程安排问题

用分治法求解循环日程安排问题。设有n=2 k个选手要进行网球循环赛,要求设计一个满足以下要求的比赛日程表:
(1)每个选手必须与其他n-1个选手各赛一次。
(2)每个选手一天只能赛一次。
(3)循环赛在n-1天之内结束。

输入样例:
输入K值。

3

输出样例:
输出比赛日程表。

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

代码:

#include<stdio.h>
int n;
int a[10100];
void print()
{for(int i=1;i<=n;i++)printf("%d ",a[i]);printf("\n");
}
void schange()
{int temp;for(int i=1;i<=n-1;i+=2){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}
}
void bchange(int x)
{int temp;for(int i=1;i<=n-2*x+1;i+=2*x){for(int j=i;j<i+x;j++){temp=a[j];a[j]=a[j+x];a[j+x]=temp;}}
}
int main()
{scanf("%d",&n);n=pow(2,n);for(int i=1;i<=n;i++)a[i]=i;print();int i;for(i=1;i<n/2;i++){if(i%2!=0){schange();print();}else{schange();bchange(i);print();}}for(int i=1;i<=n/2;i++){a[i]=n/2+i;a[n/2+i]=i;}print();for(i=1;i<n/2;i++){if(i%2!=0){schange();print();}else{schange();bchange(i);print();}}return 0;
}

202206222118三

7-8 循环日程安排问题相关推荐

  1. C语言--分治法经典例题--循环日程安排问题

    问题描述: 有size=2^n个选手要进行网球循环赛,设计一个满足以下要求的比赛日程表.满足每个选手必须和其他n-1个选手各赛一次.每个选手每一天只能赛一次.循环赛在n-1天内结束. 解法: 这个图标 ...

  2. ieda中快捷搜索_快捷指令(07)早上好(三)播报当日日程安排。

    机型:iPhone XR 系统:iOS13.2.3 快捷指令最新版 今天开始着手制作知友们留言最多的"早上好",今天先学习第三部分:播报当日日程安排. 首先我们来播放一下查看下效果 ...

  3. 会议室日程安排问题(python贪心算法)

    会议室日程安排问题(最少需要多少个会议室) 按照贪心算法,此问题可以得到最优解!原来是按结束时间排序,但这样的话并不是最少的会议室数(下面有反例)而要得到最少的会议室数,需要将议程时间按开始时间排序. ...

  4. 日历日程安排表格calendar

    自定义vue日历组件,可用于日程安排,人员分工 组件:引用了moment插件和iview的日期选择组件 <template><div class="canlendar-co ...

  5. win7系统下比较好用的桌面日程安排提醒软件是什么?

    win7系统下比较好用的桌面日程安排提醒软件是什么? win7系统的电脑上可以将便笺添加到桌面,用来记录待办事项.安排任务清单,虽然系统便笺能起到日程安排的作用,但是却不能进行直观的日程提醒.win7 ...

  6. 循环赛日程安排问题(分治法)

    问题描写叙述: 设有n(n=2^k)支队伍參加循环赛,循环赛共进行n-1天,每支队伍要与其它n-1支队伍比赛一场, 且每支队伍每天必须比赛一场,不能轮空.试按此要求为比赛安排日程. 算法思路: 我们先 ...

  7. 利用ASP.NET日期控件制作“会议日程安排”(贴首页过把瘾)

    本文转载自: https://www.cnblogs.com/peaceli/archive/2012/08/06/1359862.html 作者:peaceli 转载请注明该声明. 大家应该比较熟悉 ...

  8. 循环赛日程安排(C语言)

    问题: (先声明一点,下面我写了两种代码,但是都只能满足 队伍数 = 2的幂次方 的情况) 一年一度的欧洲冠军杯马上就要打响,在初赛阶段采用循环制,设共有n队参加,初赛共进行(n-1)天,每队要和其他 ...

  9. php日程提醒,window_Win10的日历应用中怎么新增日程安排及提醒?,Win10 内置“日历”应用 - phpStudy...

    Win10的日历应用中怎么新增日程安排及提醒? Win10 内置"日历"应用,可以方便地向它里面添加日程安排项目.既可以直接在日历应用中点击添加,也可以让小娜通过语音或文字输入添加 ...

最新文章

  1. Nature:根系菌群参与磷胁迫和免疫的平衡
  2. linux 重新加载驱动程序,在linux中模拟设备驱动程序崩溃。让python重新加载i
  3. 【NLP-ChatBot】我们熟悉的聊天机器人都有哪几类?
  4. 从今天开始研究Flex的相关项目开发
  5. SpringBoot集成Mybatis(0配置注解版)
  6. java开发课程表_展示Java开发人员课程包
  7. 阿里P8架构师谈:开源搜索引擎Lucene、Solr、Sphinx等优劣势比较
  8. 信息学奥赛一本通(2071:【例2.14】平均分)
  9. Ubuntu安装Go语言环境
  10. VB.NET中DataGridView控件
  11. JSP+JavaBean+Servlet工作原理实例讲解
  12. 监听下拉框,当前选中值
  13. linux下实现getch()函数的功能,Linux下实现getch()函数功能
  14. Spring Cloud 基础教程 - 程序猿DD
  15. SVN多项目共享导出及故障处理
  16. 区块链应用 | 直击“区块链”:概念火爆背后 是技术还是利益在驱动?
  17. 微信小程序连接MySQL数据库
  18. vi与gedit的区别
  19. 电脑黑客或电脑天才方面的电影
  20. FPGA访问SRAM

热门文章

  1. 你好哇,程序员 新鲜出炉
  2. C++实现水仙花数判断实例
  3. 冀州职教计算机专业,冀州职教中心2020年招生简章
  4. 各类一句话木马免杀集合
  5. 中国拖拉机制造行业市场消费量调研及供需发展态势分析报告2021-2027年
  6. 人体姿态估计HRNet网络模型搭建代码详解
  7. 【Y忍冬草】QTableWidget表格行列自动更改大小
  8. webservice 调用以及SOAPMessage的组装与解析
  9. Ubuntu18.04 mininet+pox+poxdesk配置
  10. SAP 系统中过账码or记账码