循环赛日程表——分治算法 原创

1001-高同学

发表文章数:265

首页 » LeetCode » 正文

 

【题目描述】

设有NN个选手进行循环比赛,其中N=2M2M,要求每名选手要与其他N−1N−1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N−1N−1天,要求每天没有选手轮空。

【输入】

输入:M。

【输出】

输出:表格形式的比赛安排表。一行各数据间用一个空格隔开。

【输入样例】

3

【输出样例】

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 <bits/stdc++.h>
#define maxn 105
#define INF 99999999
using namespace std;

int mp[maxn][maxn];
int main()
{
    int n,m,k=1,half=1;
    cin>>m;
    n=1<<m;
    mp[1][1]=1;
    while(k<=m)
    {
        for(int i=1; i<=half; i++)
        {
            for(int j=1; j<=half; j++)
            {
                mp[i][j+half]=mp[i][j]+half;
            }
        }

        for(int i=1; i<=half; i++)
        {
            for(int j=1; j<=half; j++)
            {
                mp[i+half][j]=mp[i][j+half];
                mp[i+half][j+half]=mp[i][j];
            }
        }
        half*=2;
        k++;
    }
    for(int i=1; i<=n; i++)
    {
        int f=1;
        for(int j=1; j<=n; j++)
        {
            if(f)
                f=0;
            else
                cout<<" ";
            cout<<mp[i][j];
        }
        cout<<endl;
    }
    return 0;
}

 

 

拜师教育学员文章:作者:1001-高同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《循环赛日程表——分治算法 原创》 发布于2020-09-11

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录