• 循环日程表问题


    设有n=2k个选手参加比赛,要求设计一个满足一下要求的比赛日程表:

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

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

    (3)循环赛一共进行n-1天

    设计一个比赛日程表,该表有n行和n-1列,第i行j列为第i个选手第j天遇到的选手

    #include<stdio.h>
    #include<math.h>
    int a[100][100];
    void match(int k)
    {
        int n,temp,i,j;
        n=2;      //k=0两个参赛选手日程可以直接求得
        a[1][1]=1;
        a[1][2]=2;
        a[2][1]=2;
        a[2][2]=1;
        for(i=1; i<k; i++) //迭代处理,依次处理2^n....2^k个选手的比赛日程
        {
            temp=n;
            n=n*2;//填左下角元素
            for(i=temp+1; i<=n; i++)
                for(j=1; j<=temp; j++)
                    a[i][j]=a[i-temp][j]+temp;//左下角和左上角元素的对应关系
            for(i=1; i<=temp; i++) //将左下角元素抄到右上角
                for(j=temp+1; j<=n; j++)
                    a[i][j]=a[i+temp][(j+temp)%n];
            for(i=temp+1; i<=n; i++) //将左上角元素抄到右下角
                for(j=temp+1; j<=n; j++)
                    a[i][j]=a[i-temp][j-temp];
        }
        for(i=1; i<=n; i++)
            for(j=1; j<=n; j++)
            {
                printf("%d ",a[i][j]);
                if(j==n)
                    printf("
    ");
            }
    }
    int main()
    {
        int k;
        scanf("%d",&k);
        if(k!=0)
            match(k);
    }
  • 相关阅读:
    闭包的应用(转载)
    智能社讲解js基础
    HTML5 Geolocation
    Redis主从配置
    Redis序列化配置
    Ribbon负载均衡原理学习记录
    2059 mysql
    Cache缓存
    rabbitmq(三)-Direct交换器
    rabbitmq(二)原理
  • 原文地址:https://www.cnblogs.com/hfc-xx/p/4704855.html
Copyright © 2020-2023  润新知