• 大小: 267KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: 分治法  

资源简介

设有n=2^k个运动员要进行羽毛球循环赛,现要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次。(2)每个选手一天只能比赛一次。 (3)循环赛一共需要进行n-1天。用分治法实现

资源截图

代码片段和文件信息

#include 
#include 
using namespace std;

void Round_Robin_Calendar(int kint nint **a)
{
    int ijs;
    for(i=1; i<=n; i++)
        a[1][i]=i;

    int m = 1;
    for(s=1; s<=k; s++)
    {
        n/=2;
        for(int t=1; t<=n; t++)
            for(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];
                }
        m *= 2;
    }
}


void output(int **aint n)
{
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
        {
            cout<        }
        cout<    }

}
int main()
{
    int k;
    cout<<“请输入k值:“;
    cin>>k;
    int n=1;
    for(int i=1; i<=k; i++)
        n*=2;
    cout<<“参赛人数为“<    int **a= new int *[n+1];
    for(int i=0; i<=n; i++)
    {
        a[i]= new int[n+1];
    }

    Round_Robin_Calendar(kna);

    cout<<“循环赛事日程表为:“<    cout<<“(第i行第j列表示第i个选手在第j天比赛的选手序号)“<    output(an);

    //释放空间
    for(int i=0; i<=n; i++)
    {
        delete[] a[i];
    }
    delete[] a;
    return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-10-25 12:07  game\bin\
     目录           0  2017-11-23 13:00  game\bin\Debug\
     文件      968767  2017-09-22 13:31  game\bin\Debug\game.exe
     文件        1097  2017-09-22 12:57  game\game.cbp
     文件         235  2018-01-13 22:42  game\game.depend
     文件         322  2017-09-27 13:19  game\game.layout
     文件        1284  2017-09-22 13:31  game\main.cpp
     目录           0  2017-10-25 12:07  game\obj\
     目录           0  2017-11-23 13:00  game\obj\Debug\
     文件       14448  2017-09-22 13:31  game\obj\Debug\main.o

评论

共有 条评论