分治算法之赛程安排问题
2015-11-29 21:25
411 查看
问题描述:
有n个运动员进行单循环赛(即每个运动员要和所有其他运动员进行一次比赛),试为其安排比赛日程,使每个运动员每天只赛一场,且整个赛程仅持续n-1天
代码如下:
有n个运动员进行单循环赛(即每个运动员要和所有其他运动员进行一次比赛),试为其安排比赛日程,使每个运动员每天只赛一场,且整个赛程仅持续n-1天
代码如下:
/* 8 **************************k = 1************************************* **************************k = 3************************************* 右上:1:3-----3 右上:1:4-----4 右上:2:3-----4 右上:2:4-----3 右下:3:3-----1 右下:3:4-----2 右下:4:3-----2 右下:4:4-----1 **************************k = 5************************************* **************************k = 7************************************* 右上:5:3-----7 右上:5:4-----8 右上:6:3-----8 右上:6:4-----7 右下:7:3-----5 右下:7:4-----6 右下:8:3-----6 右下:8:4-----5 右上:1:5-----5 右上:1:6-----6 右上:1:7-----7 右上:1:8-----8 右上:2:5-----6 右上:2:6-----5 右上:2:7-----8 右上:2:8-----7 右上:3:5-----7 右上:3:6-----8 右上:3:7-----5 右上:3:8-----6 右上:4:5-----8 右上:4:6-----7 右上:4:7-----6 右上:4:8-----5 右下:5:5-----1 右下:5:6-----2 右下:5:7-----3 右下:5:8-----4 右下:6:5-----2 右下:6:6-----1 右下:6:7-----4 右下:6:8-----3 右下:7:5-----3 右下:7:6-----4 右下:7:7-----1 右下:7:8-----2 右下:8:5-----4 右下:8:6-----3 右下:8:7-----2 右下:8:8-----1 编号 1 2 3 4 5 6 7 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> #define Max 100 int a[Max][Max] = {0}; void gamecal(int k,int n) { int i,j; if(n==2) { a[k][1] = k; a[k][2] = k+1; a[k+1][1] = k+1; a[k+1][2] = k; printf("**************************k = %d*************************************\n",k); }else{ gamecal(k,n/2); gamecal(k+n/2,n/2); //右上 for(i=k;i<k+n/2;i++) for(j=1+n/2;j<=n;j++) { a[i][j] = a[i+n/2][j-n/2]; printf("右上:%d:%d-----%d\n",i,j,a[i][j]); } //右下 for(i=k+n/2;i<k+n;i++) for(j=n/2+1;j<=n;j++) { a[i][j] = a[i-n/2][j-n/2]; printf("右下:%d:%d-----%d\n",i,j,a[i][j]); } } } int main() { int n,i,j; scanf("%d",&n); j = 2; for(i=2;i<8;i++) { j *= 2; if(n == j) break; } gamecal(1,n); printf("\n编号"); for(i=2;i<=n;i++) { printf("%4d",i-1); } printf("\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%4d",a[i][j]); printf("\n"); } return 0; }
相关文章推荐
- UML---实现图
- linux 关机命令总结
- xml多层嵌套解析方法SAX方式(包括网络请求)
- JS array相关方法
- 递归与尾递归
- C++内存管理
- 【C语言提高03】变量本质
- SSH网上商城
- “南大软院大神养成计划“_第十四天的学习“
- 属性中的属性
- 2.0 Linux系统的安装之Fedora安装单系统(2)
- 2.0 Linux系统的安装之Fedora安装单系统(2)
- php缓存技术详细介绍及php缓存的实现代码
- LeetCode(2)--Add Two Numbers
- c++生成二维码
- dojo/query源码解析
- redis中的事务
- win10 计算机程序
- BZOJ 4341 [CF253 Printer] 解题报告
- 张国祥老师参加联创世纪第387期系统的力量宁波公益活动