篮球循环赛 c语言实现,noj算法题——循环赛日程表

时限: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

C语言代码如下:

#include

#include

int a[10005][10005];

void time(int k,int n)

{

int i,j;

int m,s,t;

for(i=1;i<=n;i++){

a[1][i]=i;

}

m=1;

for(s=1;s<=k;s++){

n/=2;

// printf("%d",n);

for(t=1;t<=n;t++){

for(i=m+1;i<=2*m;i++){

for(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 main()

{

int i,n,k,j;

scanf("%d",&k);

n=1;

for(i=0;i

n*=2;

}

time(k,n);

for(i=1;i<=n;i++){

for(j=1;j<=n;j++){

if(j==n){

printf("%d",a[i][j]);

}

else

printf("%d ",a[i][j]);

}

printf("\n");

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值