• 循环赛日程表


    循环赛日程表

    时限:1000ms 内存限制:10000K  总时限:3000ms

    描述
    用分治算法生成循环赛日程表(1到2的n次方个人)
     
    输入
    一个整数n
     
    输出
    循环赛日程表(1到2的n次方个人)
     
    输入样例
    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 <iostream>
    #include <math.h>
    using namespace std;
    static int data[129][129];
    void Merge(int num)
    {
        for(int i = 1;i <= num/2; i++)
            for(int j = 1;j <= num/2; j++)
            {
                data[i][j+num/2] = data[i][j]+(num/2);  //正右方填充
                data[i+num/2][j] = data[i][j]+(num/2);  //正下方填充
                data[i+num/2][j+num/2] = data[i][j];    //右下方填充
            }
    
    }
    void Manage(int num,int n)          //num表示方阵的大小,n表示迭代的层次
    {
        if(n==0)
        {
            data[1][1] = 1;
        }
        else
        {
            Manage(num/2,n-1);
            Merge(num);
        }
    }
    void Show(int num)
    {
        for(int i = 1;i <= num/2; i++)
        {
            for(int j = 1;j <= num/2; j++)
                cout<<data[i][j]<<" ";
            cout<<endl;
        }
    
    }
    int main()
    {
        int n,num;
        cin>>n;
        n++;
        num = powl(2,n);
        Manage(num,n);
        Show(num);
        return 0;
    }
    

      

    态度决定高度,细节决定成败,
  • 相关阅读:
    Regexp:教程
    Regexp:目录
    笔记-C#:C# 方法、属性杂项-01
    Regexp:正则表达式应用——实例应用
    正则表达式:百科
    Regexp:template
    AngularJS:参考手册
    命令目录
    java实现连续数的公倍数
    java实现连续数的公倍数
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/4357913.html
Copyright © 2020-2023  润新知