循环日程表问题
来源:互联网 发布:表达知错的句子 编辑:程序博客网 时间:2024/06/03 18:57
1.问题描述:有n=2^k个运动员进行网球循环赛,每个选手必须与其他n-1个选手各赛一次,1个选手1天只能比赛一次,设计日程表,有n行n-1列,第i行第j列为第i个选手第j天遇到的敌手;
2.分析递归方法:日程表分相等四块,左下的值分别等于左上的值加(n/2);左上分别等于右下;左下分别等于右上
3.二维指针作为实参传递,形参定义为指向一维数组的指针;
#include<stdio.h>#define MAX 20void dfs(int (*A)[MAX],int n){int i,j;int m=n/2;if(m==0)//递归结束条件return;dfs(A,m);for(i=1;i<=m;i++)//k=1,m=1;k=2,m=2;k=3;m=4{for(j=1;j<=m;j++){A[m+i][j]=A[i][j]+m;//依次对左下角赋值A[m+i][m+j]=A[i][j];//依次对右下角赋值A[i][m+j]=A[m+i][j];//依次对右上角赋值}}}int main(){int i,j,n,k;int A[MAX][MAX];scanf("%d",&k);n=1;for(i=0;i<k;i++)n*=2;A[1][1]=1;dfs(A,n);for(i=1;i<=n;i++)//输出,第i行第j列,存放的第i个选手第j天遇到的对手{for(j=1;j<=n;j++){printf("%d ",A[i][j]);}printf("\n");}return 0;}
阅读全文
0 0
- 递归--循环日程表问题
- 循环日程表问题
- 循环日程表问题
- 循环日程表问题
- 循环日程表问题
- 循环日程表问题
- 循环赛制日程表问题
- 循环日程表
- 循环日程表问题 通过递归实现
- 算法竞赛入门经典 8.3.2循环日程表问题
- 算法竞赛入门经典 8.3.2 循环日程表问题
- NK1437(循环日程表) [分治]
- 循环比赛日程表
- 循环比赛日程表
- 循环比赛日程表
- 循环比赛日程表
- 循环比赛日程表
- 循环赛事日程表
- 两个栈模拟一个队列和两个队列模拟一个栈(c++实现)
- 二叉查找树、平衡二叉树、红黑树、B-/B+树性能对比
- java基础--while循环实现存钱问题案例
- Python学习、机器学习(图像处理)、网络渗透、考研杂记
- HDU6025 Coprime Sequence【前缀GCD+后缀GCD】
- 循环日程表问题
- JAVASE_程序的类型及构成
- 初学Android Studio
- 鼠标拖动文字
- Python爬取网页时的#号是为了区分什么
- AJAX内容
- ConstraintLayout(约束布局)
- Biomechanical Design of the Berkeley Lower
- Sensing Pressure Distribution on a Lower-Limb Exoskeleton