精华内容
下载资源
问答
  • 循环赛日程表算法

    2012-03-20 22:22:53
    赛程表安排问题,有2的k次方(n)支球队,在n-1天两两比赛,每支球队每天只进行一场比赛,求安排日程表。资源是Java实现的算法
  • 循环赛日程表算法——分治法

    千次阅读 2020-04-15 15:59:55
    设有n=2^{k}个选手要进行网球循环赛,要求设计一个满足以下要求的比赛日程表: (1)个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次。 按此要求,可将比赛日程表设计成一个 n 行n-1列的二维表,...

    一、问题描述:

    设有n=2^{k}个选手要进行网球循环赛,要求设计一个满足以下要求的比赛日程表:

    (1)个选手必须与其他n-1个选手各赛一次;

    (2)每个选手一天只能赛一次。

    按此要求,可将比赛日程表设计成一个 n 行n-1列的二维表,其中,第 i 行第 j 列表示和第 i 个选手在第 j 天比赛的选手。
    在这里插入图片描述

    二、问题分析:

    按照分治的策略,可将所有参赛的选手分为两部分,n=2k个选手的比赛日程表就可以通过为\frac{n}{2}=2k-1个选手设计的比赛日程表来决定。递归地执行这种分割,直到只剩下2个选手时,比赛日程表的制定就变得很简单:只要让这2个选手进行比赛就可以了。

    显然,这个求解过程是自底向上的迭代过程,其中左上角和左下角分别为选手1至选手4以及选手5至选手8前3天的比赛日程,据此,将左上角部分的所有数字按其对应位置抄到右下角,将左下角的所有数字按其对应位置抄到右上角,这样,就分别安排好了选手1至选手4以及选手5至选手8在后4天的比赛日程,如图©所示。具有多个选手的情况可以依此类推。

    这种解法是把求解2^{k} 个选手比赛日程问题划分成依次求解2{1}、2{2}、…、2{k}个选手的比赛日程问题,换言之,2{k}个选手的比赛日程是在2^{k-1}个选手的比赛日程的基础上通过迭代的方法求得的。在每次迭代中,将问题划分为4部分:

    (1)左上角:左上角为2^{k-1}个选手在前半程的比赛日程;

    (2)左下角:左下角为另2{k-1}个选手在前半程的比赛日程,由左上角加2{k-1}得到,例如2{2}个选手比赛,左下角由左上角直接加2得到,2{3}个选手比赛,左下角由左上角直接加4得到;

    (3)右上角:将左下角直接抄到右上角得到另2^{k-1}个选手在后半程的比赛日程;

    (4)右下角:将左上角直接抄到右下角得到2^{k-1}个选手在后半程的比赛日程;

    算法设计的关键在于寻找这4部分元素之间的对应关系。

    #include <stdio.h>
    #define MAX 100
    int a[MAX][MAX];
    void Copy(int tox,int toy,int fromx,intfromy,int r)
    {
             for(inti=0;i<r;i++)
                       for(intj=0;j<r;j++)
                                a[tox+i][toy+j]=a[fromx+i][fromy+j];                                   
    }
    //构造循环赛日程表,选手的数量n=2^k
    void Table(int k)
    {
             inti,r;
             intn=1<<k;
             //构造正方形表格的第一行数据
             for(i=0;i<n;i++)
                       a[0][i]=i+1;
             //采用分治算法,构造整个循环赛程
             for(r=1;r<n;r<<=1)
             for(i=0;i<n;i+=2*r)
             {
                       Copy(r,r+i,0,i,r);  
                       Copy(r,i,0,r+i,r);
             }
              printf("参赛人数为:%d\n(第i行第j列表示和第i个选手在第j天比赛的选手序号)\n",n);
       for(i=0;i<=n-1;i++)
           for(r=0;r<=n-1;r++)
           {
               printf("%d ",a[i][r]);
                    if(r==n-1)
                    printf("\n");      
           }
    }
     
      intmain() {     
                    int i,r,k;
                    int n=2^k;
           printf("比赛选手个数为n(n=2^k),请输入参数K(K>0):\n");
                       scanf("%d",&k);
                       if(k!=0)
                       Table(k);
                    return 0;  
    }
    
    
    展开全文
  • 设有n=2^k个运动员要进行羽毛球循环赛,现要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次。(2)每个选手一天只能比赛一次。 (3)循环赛一共需要进行n-1天。用分治法实现
  • 循环赛日程表算法 #include <stdio.h> #define MAX 100 int a[MAX][MAX]; void Copy(int tox,int toy,int fromx,int fromy,int r) { for(int i=0;i;i++) for(int j=0;j;j++) a[tox+i][toy+j]=a[fromx+i][fromy+j]; }...
  • 有N个运动员进行单循环赛,即每个运动员要和所有其他运动员进行一次比赛。 1.试用分治法为N个运动员安排比赛日程。 2.要求每个(或队)运动员每天只能进行一场比赛,且当运动员人数(队数)为偶数时,整个比赛在N-1...

    题目:
    有N个运动员进行单循环赛,即每个运动员要和所有其他运动员进行一次比赛。
    1.试用分治法为N个运动员安排比赛日程。
    2.要求每个(或队)运动员每天只能进行一场比赛,且当运动员人数(队数)为偶数时,整个比赛在N-1天内结束,为奇数时,在N天内结束;
    3.将运动员从1到N编号。
    算法实现:

    /*
     * 2_11.cpp
     *
     *  Created on: 2018年10月24日
     *      Author: 20133
     */
    
    #include <iostream>
    #include <cmath>
    
    void Table(int k, int** a);
    
    int main() {
    	using namespace std;
    	int k;
    	cin >> k;
    	int n = pow(2, k);
    	n += 1; //行列从标号1开始
    	//二级指针作为参数的创建和消除的方法
    	int** a = new int *[n]; //开辟行空间
    	for (int i = 0; i < n; i++)
    		a[i] = new int[n]; //开辟列空间
    
    	Table(k, a);
    
    	for (int i = 0; i < n; i++)
    		delete[] a[i]; //删列
    	delete[] a; //删行
    	return 0;
    }
    
    void Table(int k, int** a) {
    	using namespace std;
    	int n = pow(2, k);
    	for (int i = 1; i <= n; i++)
    		a[1][i] = i;
    	int m = 1;
    	/*s = 1时,m = 1, n = 4,每一行分成四部分来复制,依据第一行写出第二行
    	 *s = 2时,m = 2, n = 2,每一行分成两部分来复制,依据第一行写出第三行,依据第二行写出第四行
    	 *s = 3时,m = 4, n = 1,每一行全部进行复制,依据第一行写出第五行,依据第二行写出第六行,
    	 *依据第三行写出第七行,依据第四行写出第八行
    	 */
    	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];
    
    					cout << "[" << i << "," << j + (t - 1) * m * 2 << "]=";
    					cout << "[" << i - m << "," << j + (t - 1) * m * 2 - m
    							<< "]=" << a[i - m][j + (t - 1) * m * 2 - m] << "	";
    					cout << "[" << i << "," << j + (t - 1) * m * 2 - m << "]=";
    					cout << "[" << i - m << "," << j + (t - 1) * m * 2 << "]="
    							<< a[i - m][j + (t - 1) * m * 2] << "	";
    				}
    			}
    			cout << endl;
    		}
    		cout << endl;
    		m *= 2;
    	}
    	//输出日程安排
    	n = pow(2, k);
    	for (int i = 1; i <= n; i++) {
    		for (int j = 1; j <= n; j++)
    			cout << a[i][j] << " ";
    		cout << endl;
    	}
    

    }

    输入:
    3

    输出结果:

    [2,2]=[1,1]=1	[2,1]=[1,2]=2	
    [2,4]=[1,3]=3	[2,3]=[1,4]=4	
    [2,6]=[1,5]=5	[2,5]=[1,6]=6	
    [2,8]=[1,7]=7	[2,7]=[1,8]=8	
    
    [3,3]=[1,1]=1	[3,1]=[1,3]=3	[3,4]=[1,2]=2	[3,2]=[1,4]=4	[4,3]=[2,1]=2	[4,1]=[2,3]=4	[4,4]=[2,2]=1	[4,2]=[2,4]=3	
    [3,7]=[1,5]=5	[3,5]=[1,7]=7	[3,8]=[1,6]=6	[3,6]=[1,8]=8	[4,7]=[2,5]=6	[4,5]=[2,7]=8	[4,8]=[2,6]=5	[4,6]=[2,8]=7	
    
    [5,5]=[1,1]=1	[5,1]=[1,5]=5	[5,6]=[1,2]=2	[5,2]=[1,6]=6	[5,7]=[1,3]=3	[5,3]=[1,7]=7	[5,8]=[1,4]=4	[5,4]=[1,8]=8	[6,5]=[2,1]=2	[6,1]=[2,5]=6	[6,6]=[2,2]=1	[6,2]=[2,6]=5	[6,7]=[2,3]=4	[6,3]=[2,7]=8	[6,8]=[2,4]=3	[6,4]=[2,8]=7	[7,5]=[3,1]=3	[7,1]=[3,5]=7	[7,6]=[3,2]=4	[7,2]=[3,6]=8	[7,7]=[3,3]=1	[7,3]=[3,7]=5	[7,8]=[3,4]=2	[7,4]=[3,8]=6	[8,5]=[4,1]=4	[8,1]=[4,5]=8	[8,6]=[4,2]=3	[8,2]=[4,6]=7	[8,7]=[4,3]=2	[8,3]=[4,7]=6	[8,8]=[4,4]=1	[8,4]=[4,8]=5	
    
    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 
    

    注释:因为好奇分治方法的具体过程,所以将中间过程输出,供大家参考,另:1024节日快乐,第一篇博客,希望大家喜欢

    展开全文
  • 循环赛日程表

    2014-12-26 12:19:49
    该文档详细的讲解了循环赛日程表算法分析与实现,并在这个文档中分了多种算法来分析循环赛日程表,并分析了各种算法的复杂度
  • 循环赛日程表的分治算法实现实验报告_gxl深 圳 大 学 实 验 报 告课程名称: 算法设计与分析实验项目名称: 分治算法--矩阵相乘的Strassen算法及时间复杂性分析或--循环赛日程表的分治算法实现或--多项式乘积问题的...

    循环赛日程表的分治算法实现实验报告_gxl

    深 圳 大 学 实 验 报 告

    课程名称: 算法设计与分析

    实验项目名称: 分治算法

    --矩阵相乘的Strassen算法及时间复杂性分析

    或--循环赛日程表的分治算法实现

    或--多项式乘积问题的分治算法及时间复杂性分析

    学院:

    专业、班级:

    指导教师:

    报告人: 学号:

    实验时间:

    实验报告提交时间:

    教务处制

    实验目的与实验内容

    1.1实验目的

    通过本设计性实验,理解递归算法以及分治算法的基本思想。理解Strassen矩阵乘法的理论分析或循环赛日程表的分治算法以及编程实现。掌握多项式乘积的分治方法。能对递归算法以及分治算法进行设计、分析。

    本课程实验目的是验证、巩固和补充课堂讲授的理论知识。培养学生初步具备独立设计算法和对给定算法进行复杂性分析的能力,为后继课程和实际工作打下基础。

    1.2实验题目 (三题任选一)

    题目1:设计一个矩阵相乘的Strassen算法编程实现并做算法的时间复杂性分析。其中:乘积矩阵C = A*B, A=(aij)n*n,B=(bij)n*n(1)考虑n为2的幂次方的情形,取n=8实现分治递归; (2)考虑n不是2的幂次方,n为偶数的情形,设计一个传统方法与的Strassen算法相结合的矩阵相乘算法,取n=12实现分治递归(可以有多种方案实现);矩阵A,B元素自动生成,限定矩阵元素在0-10之间。

    题目2:设计一个满足以下要求的循环比赛日程表:()

    (1)每个选手必须与其他n-1个选手各赛一次;

    (2)每个选手一天只能赛一次;

    (3)当n是奇数时,循环赛一共进行n天, n是偶数时,循环赛进行n-1天。

    题目3:设计一个多项式乘积问题的分治算法并做算法的时间复杂性分析

    1.3实验要求:

    题目1具体要求:

    (1)矩阵阶数n由用户输入(注意n非 2k 时的处理);

    (2)n阶矩阵A、B调用随机函数自动生成,限定矩阵元素在0-10之间;

    (3)输出A、B及C=A*B

    其中:输出传统定义矩阵乘积结果和Strassen矩阵乘积的结果,验证分治算法的正确性;

    (4)对直接计算(传统定义)矩阵乘积、Strassen矩阵乘积进行执行时间统计,分别记为T1,T2,并给出对比和时间复杂性分析。

    题目2具体要求:

    (1)选手人数n由用户输入(注意n为奇数和偶数时的不同处理);

    (2)验证n=2k的比赛日程表;

    (3)完成n=2k+1和n=2k的不同处理并输出形如下表的比赛日程表。其中: k 为【5,7】间的整数;

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    2

    1

    5

    3

    7

    4

    8

    9

    10

    6

    3

    8

    1

    2

    4

    5

    9

    10

    6

    7

    4

    5

    9

    1

    3

    2

    10

    6

    7

    8

    5

    4

    2

    10

    1

    3

    6

    7

    8

    9

    6

    7

    8

    9

    10

    1

    5

    4

    3

    2

    7

    6

    10

    8

    2

    9

    1

    5

    4

    3

    8

    3

    6

    7

    9

    10

    2

    1

    5

    4

    9

    10

    4

    6

    8

    7

    3

    2

    1

    5

    10

    9

    7

    5

    6

    8

    4

    3

    2

    1

    表 分治法n=10的比赛日程表

    题目3具体要求:

    对教材114页第21题的数据,完成两个多项式乘积的分治算法:

    多项式Pn(X)的n与Qm (X)的m由用户输入;

    输出直接计算多项式乘积和分治算法多项式乘积的结果,验证分治算法的正确性;

    对直接计算多项式乘积、分治算法多项式乘积进行执行时间统计,分别记为T1,T2,并给出对比和时间复杂性分析。

    对P4(X)= X4 – X3 + X2 - X +1与Q5 (X)= X5 –3 X+ -10,按要求(1)~(3)完成两个多项式乘积的分治算法。

    开发环境

    VC 6.0编程软件

    算法简述

    总体思路:按分治策略,将所有分为两半,n个选手可以通过n/2个选手设计的比赛日程表来决定。递归地用一分为二的略对选手进行分割,直到只剩下两个选手。

    对于N为奇数的情况可以虚拟多一个选手,使其编程N+1个选手的日程表,最然后忽略虚拟运动员参与的比赛。对于分割时候N/2的情况也做特殊处理, 前n/2轮比赛空选手与下一个未参赛的选手进行比赛。

    模型求解

    程序设计(方案)说明(如:你如何实现矩阵划分、矩阵结果的合并

    展开全文
  • 算法设计与分析——循环赛日程表

    千次阅读 多人点赞 2020-10-06 15:36:18
    设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能参赛一次; (3)循环赛在n-1天内结束 按此要求将比赛日程表设计成有n行...

    问题描述:
    设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:

    (1)每个选手必须与其他n-1个选手各赛一次;
    (2)每个选手一天只能参赛一次;
    (3)循环赛在n-1天内结束

    按此要求将比赛日程表设计成有n行和n-1列的一个表。在表中的第i行,第j列处填入第i个选手在第j天所遇到的选手。

    在这里插入图片描述

    思路:

            按分治策略,我们可以将所有的选手分为两半,则n个选手的比赛日程表可以通过n/2个选手的比赛日程表来决定。递归地用这种一分为二的策略对选手进行划分,直到只剩下两个选手时,比赛日程表的制定就变得很简单。这时只要让这两个选手进行比赛就可以了。

            如上图,所列出的正方形表是8个选手的比赛日程表。其中左上角与左下角的两小块分别为选手1至选手4和选手5至选手8前3天的比赛日程。据此,将左上角小块中的所有数字按其相对位置抄到右下角,又将左下角小块中的所有数字按其相对位置抄到右上角,这样我们就分别安排好了选手1至选手4和选手5至选手8在后4天的比赛日程。依此思想容易将这个比赛日程表推广到具有任意多个选手的情形。

    算法步骤解读:

    1. 用一个for循环输出日程表的第一行 for(int i=1;i<=n;i++) a[1][i] = i
      在这里插入图片描述

    2. 定义一个m值,m初始化为1,m用来控制每一次填充表格时i(i表示行)和j(j表示列)的起始填充位置。

    3. 用一个for循环将问题分成k部分,对于k=3,n=8(2的k次方),将问题分成3大部分,第一部分为,根据已经初始化的第一行,填写第二行;第二部分为,根据已经填充好的第一部分,填写第三四行,第三部分为,根据已经填充好的前四行,填写最后四行。for (int s=1;s <= k; s++) n/=2;

    4. 用一个for循环对3.中提到的每一部分进行划分for(int t=1;t<=n;t++)对于第一部分,将其划分为四个小的单元,即对第二行进行如下划分
      在这里插入图片描述
      同理,对第二部分(即三四行),划分为两部分,第三部分同理。

    5. 最后,根据以上for循环对整体的划分和分治法的思想,进行每一个单元格进行对角线填充。

     for(int i=m+1;i<=2*m;i++) {//i控制行      
    
          for(int j=m+1;j<=2*m;j++){  //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];/*左下角的值等于右上角的值 */
         }
    }
    

    过程

    (1)由初始化的第一行填充第二行在这里插入图片描述
    (2)由s控制的第一部分填完。然后是s++,进行第二部分的填充

    t=1; t=2
    在这里插入图片描述
    (3)最后是第三部分的填充
    t = 1
    在这里插入图片描述
    完整代码如下:

    #include<iostream>
    #include<vector>
    using namespace std;
    
    void schedule(vector< vector<int> > &table, int n, int k){
    
    	for(int i = 1; i <= n; i++){
    		//初始化表格第一行 
    		table[1][i] = i;
    	}
    	
    	int m = 1;
    	
    	for(int s = 1; s <= k; s++){
    		
    		n /= 2;
    		
    		for(int t = 1; t <= n; t++){  //对每一部分进行划分(达到分治目的) 
    				
    			for(int i = 1 + m; i <= 2*m; i++){ //控制行 
    				 
    				for(int j = 1 + m; j <= 2*m; j++){   //控制列 
    					
    					table[i][j + (t-1)*m*2] = table[i - m][j + (t-1)*m*2 - m];  //右下角等左于上角的值 
    					table[i][j + (t-1)*m*2 - m] = table[i - m][j + (t-1)*m*2];  //左下角等于右上角的值 
    				}
    			}	
    		}
    		m *= 2;
    	}
    }
    
    int input(int n, int k){
    		
    	do{
    		
    		n = n / 2;
    		k++;
    	}while(n > 1);
    	
    	return k;
    }	
    
    void display(vector< vector<int> > &table, int n){
    	
    	cout << "比赛日程表:" << endl;
    	for(int i = 1; i <= n; i++){
    		
    		for(int j = 1; j <= n; j++){
    			
    			cout << table[i][j] << " ";
    			if(j == 1) cout << "| ";
    			
    		}
    		cout << endl;
    	}
    	
    }
    
    int main(){
    	
    	int k = 0;
    	int n = 0;
    	cout << "请输入要比赛的人数: ";
    	cin >> n;
    	vector< vector<int> > table(n+1, vector<int>(n+1)); //创建一个二维数组表示日程表 
    	k = input(n, k);  //2的K次方 
    	schedule(table, n, k);
    	display(table, n);
    	
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • 循环赛日程表的分治算法实现实验报告gxlPAGEPAGE 2深 圳 大 学 实 验 报 告课程名称: 算法设计与分析实验项目名称: 分治算法--矩阵相乘的Strassen算法及时间复杂性分析或--循环赛日程表的分治算法实现或--多项式...
  • 循环赛日程表问题

    2021-02-10 08:39:22
    最近在学习算法分析与设计这门课时,遇到了循环赛日程表问题。我感觉课本上的方法并不是很好(浪费空间而又不好理解),而网上流传的代码也基本和课本上类似,于是我决定用自己的方式来实现这个算法。目录问题描述设有...
  • C++循环赛日程表算法

    千次阅读 2013-10-12 10:46:30
    题目是这样的: 编写程序实现循环赛日程表。设有n=2^k(2的k次方)个队伍要进行循环赛。现要设计一个满足以下要求的比赛日程表:(1)每个队伍必须与其它n-1个队伍各赛一次(2)每个队伍一天只能赛一
  • 总体思路:按分治策略,将所有分为两半,n个选手可以通过n/2个选手设计的比赛日程表来决定。递归地用一分为二的略对选手进行分割,直到只剩下两个选手。 对于N为奇数的情况可以虚拟多一个选手,使其编程N+1个选手的...
  • 算法循环赛日程表

    千次阅读 2017-11-03 11:37:52
    算法循环赛日程表 循环赛日程表 一.问题描叙设有n=2^k个运动员,要进行网球循环赛。现在要设计一个满足以下要求的比赛日程表(1).每个选手必须与其他n-1个选手各赛一场(2).每个选手一天只能赛一次(3).循环赛...
  • 关于循环赛日程表算法的研究

    千次阅读 2014-09-26 01:35:42
    关于循环赛日程表算法的研究
  • 循环赛日程表是非常典型的分治递归的例子,也的一个稍微有点难的问题。但是,我相信大家一定没问题
  • 用C++设计一个循环赛日程表,其中包括源代码,需求分析和算法设计等
  • 2、例子:设有n=2的k次方个运动员要进行网球的循环赛,现在需要射击一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛次: (3)循环赛一共进行n-1天; 3、解决方法:...
  • 举例 4位选手的循环赛日程表 蓝色部分为运动员编号。 第1行表示1号运动员第1天与2号比赛,第2天与3号比赛,第3天与4号比赛。 2 解决 按分治策略,将所有的选手分为两半,n个选手的比赛日程表就可以通过为n/2个选手...
  • 算法设计:设计一张循环赛日程表。 问题输入:输入k值。 问题输出:输出n×n的赛程表。 问题思路:可以采用分治递归解决,也可以采用非递归算法。 A. 分治递归方案 1 2 3 4 5 6 7 8 2 ...
  • JAVA代码—算法基础:循环赛日程表

    千次阅读 2018-02-20 14:57:35
    循环赛日程表 问题描述:设有n=2的K次方个运动员要进行乒乓球循环赛。现在要设计一个满足一下条件的比赛日程表: 每个选手必须与其它n-1个选手各比赛一次; 每个选手一天只能赛一次; 循环赛一共进行n-1天。 按...
  • 1 循环赛日程表(2人)   (2) 四个选手的日程表( k=2 , n=4 , 4 行× 3 列表格,循环赛进行 3 天): 首先 n=2 2 ,所以应该退化到求解两个 2 人循环赛的问题,日程表构建如下:   表 1 循环...
  • 【问题描述】设有n=2k个选手要进行网球循环赛,要求设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次; (3)循环赛在n-1天之内结束。 【问题...
  • 关于算法的一些题目及简单解答,有约瑟夫问题及循环赛日程表,还有输油管道问题
  • 循环赛日程表(c语言)

    2010-06-06 10:19:01
    循环日程表(源代码) 使用多边形方面 只能用偶数
  • 循环赛日程表。设有n=2k(k是指数)个运动员要进行网球比赛。现在要设计一个满足以下要求的比赛日程表: (1) 每个选手必须与其他n-1个选手各比赛一次; (2) 每个选手一天只能参赛一次; (3) 循环赛一共进行n-1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,753
精华内容 701
关键字:

循环赛日程表算法