zoukankan      html  css  js  c++  java
  • 循环赛日程表(分治)

    时限: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<stdio.h>
    #include<math.h>
    #define  N 65
    int Arr[N][N]={0};
    void timetable(int np);
    void copy(int np);
    void print(int np);
    int main()
    {
        int n,np;
        scanf("%d",&n);
        np=pow(2,n);    
        timetable(np);
        print(np);
        return 0;
    }
    void timetable(int np)
    {
        if(np==1)
        {  Arr[1][1]=1;  return; }
        else
        {  timetable(np/2);
           copy(np);     
        }
    }
    void copy(int np)
    {
       int k=np/2;
       for(int i=1;i<=k;i++)
           for(int j=1;j<=k;j++)
           {  Arr[i][j+k]=Arr[i][j]+k;
              Arr[i+k][j]=Arr[i][j]+k;
              Arr[i+k][j+k]=Arr[i][j];      
           }
    }
    void print(int np)
    {   
        for(int i=1;i<=np;i++)
        {    printf("%d",Arr[i][1]);
            for(int j=2;j<=np;j++)
                printf(" %d",Arr[i][j]);
            printf("\n");
        }
    }
  • 相关阅读:
    二进制中1的个数
    原码、反码、补码,计算机中负数的表示
    win10安装MySQL
    X86、X64、X86_64
    windows搭建深度学习环境
    驱动
    cpu、gpu
    常见的文件系统
    UltralSO制作U盘启动盘
    save、load
  • 原文地址:https://www.cnblogs.com/IThaitian/p/2585040.html
Copyright © 2011-2022 走看看