当前位置:频道 > 正文

循环赛日程表 循环赛日程表是什么?

2022-12-23 15:31:04  来源:汇世网

循环赛日程表

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

描述

用分治算法生成循环赛日程表(1到2的n次方个人)

输入

一个整数n

输出

循环赛日程表(1到2的n次方个人)

输入样例

输出样例

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

#include

using namespace std;

int a[10000][10000];

void table(int k, int n)

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

a[1][i] = i;

int m = 1; //每次填充起始位置

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

n/=2;

for(int t = 1; t <= n; t++) //分的块数

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

for(int 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]; //左下角的值等于右上角的值

//printf("i = %d\t j+(t-1)*m*2 = %d\t j+(t-1)*m*2-m = %d\t, i-m=%d\n", i, j+(t-1)*m*2, j+(t-1)*m*2-m, i-m);

m *= 2; //更新填充起始位置

int main()

int k;

cin >> k;

int n = 1;

for(int i = 1; i <= k; i++)

n *= 2;

table(k, n);

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

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

printf("%d%c", a[i][j], j!=n?' ':'\n');

return 0;

关键词: 循环赛日程表 循环赛日程表是什么 循环赛日程表有什么用 循环赛日程表描述

推荐阅读

最小的马产地在哪 最小的马产地有哪些?

见过最小的马长啥样?如图所示:马儿在我们的印象中是疾驰飞奔、健硕高大的形象,但是图中这种马完全颠覆我们的对马儿的印象,究竟是怎么回 【详细】

6月16日是什么日子? 为什么美国宇航局6月16日致敬?

您可以使用Freedom做到惊人。6月快乐。Godspeed在您的旅程中。1月16日纪念1865年6月19日,当时少将戈登·格兰杰(Gordon Granger)将军抵达 【详细】

运动型轿车是什么 运动型轿车与普通车有何区别?

运动型轿车凭借着外观酷炫,动力性能强的特点,深受国内众多消费者的喜爱。特别是在年轻消费者心目中,运动型轿车基本上是购车的首选。但是 【详细】

汽油清洗剂是什么 汽油清洗剂加在汽油里是干嘛的?

最近有很多车主反映加油的时候总是建议用汽油清洁剂。但是,大部分人还是不太了解,还有就是一部分人纳闷汽油清洗剂加在汽油里是干嘛的?汽 【详细】

中国最便宜的汽车是哪个 最便宜的汽车汇总

现在汽车已经成为了大家最常见的交通代步工具了。但是,依然还是有很多的家庭非常的需要代步工具,却买不起特别贵的汽车。所以今天,我们就 【详细】

关于我们  |  联系方式  |  免责条款  |  招聘信息  |  广告服务  |  帮助中心

联系我们:85 572 98@qq.com备案号:粤ICP备18023326号-40

科技资讯网 版权所有