zoukankan      html  css  js  c++  java
  • NK1437(循环日程表)

    1437: 校长杯


    Time Limit: 1500 ms    Memory Limit: 32000 kB  
    Judge type: Multi-cases Special Judge
    Total Submit : 110 (53 users)   Accepted Submit : 67 (47 users)   Page View : 3975 
    Font Style: Aa Aa Aa

            在南开大学,一年一度的“校长杯”三大球比赛是广大师生必不可少的一次运动大餐。随着南开大学学校规模的扩大和体育事业的发展,参与校长杯赛事的师生越来越多。竞赛采用的是传统的“循环赛”制,即每队的选手都必须和其他各队选手较量一次。为了竞赛日程安排方便,报名的队伍数n都将是2的k次幂,(0<k<9,且k为自然数)。为了避免参赛师生过于疲劳,竞赛安排每支队伍每天只比赛一次。同时,竞赛一共进行(n-1)天。
          现在,竞赛组委会想请你帮忙设计一个循环赛的日程表,使得竞赛的日程安排满足上述要求。

    Input

    输入只有一个数k。

    Output

    请输出一个n行,每行有n个正整数的循环赛日程表。相邻的两个正整数用一个空格隔开。
    其中,第i行(0<i<n+1)表示第i队的参赛日程,第1个正整数为i,表示参赛队的队号,后面的(n-1)个正整数表示该队在参赛日程中,依次较量的队号。

    Sample Input

    1

    Sample Output

    1 2
    2 1
    #include<stdio.h>
    int n,m[1<<8][1<<8];
    //由左上角得到其他 
    void fun(int size)
    {
    	int i,j,k;
    	if(size==n) return;
    	for(i=0;i<size;++i)
    		for(j=0;j<size;++j)
    			m[i+size][j+size]=m[i][j];
    	for(i=0;i<size;++i)
    		for(j=size;j<2*size;++j)
            {
    			m[i][j]=m[i][j-size]+size;
    			m[j][i]=m[i][j-size]+size;
    		}
    	fun(size*2);
    }
    int main()
    {
    	int i,j,k;
    	while(~scanf("%d",&k))
        {
    		n=1<<k;
    		m[0][0]=1;
    		fun(1);
    		for(i=0;i<n;++i)
            {
    			for(j=0;j<n-1;++j)
    				printf("%d\t",m[i][j]);
    			printf("%d\n",m[i][j]);
    		}
    	}
    }
    
  • 相关阅读:
    使用jvisualvm和飞行记录器分析Java程序cpu占用率过高
    Callable、Future和FutureTask
    CountDownLatch(闭锁)
    ArrayBlockingQueue和LinkedBlockingQueue分析
    并发容器之CopyOnWriteArrayList(转载)
    svn 文件夹 无法提交
    rsync 不能同不子级目录的问题
    nginx 匹配.zip .apk 结尾的文件 直接下载
    Android文件Apk下载变ZIP压缩包解决方案
    nginx: [warn] conflicting server name "locahost" on 0.0.0.0:80, ignored
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2648450.html
Copyright © 2011-2022 走看看