网站建设 制作教程,wordpress 第三方应用,上海建站哪家好,深圳免费做网站1、问题描述#xff1a;有n2^k个远动员选手#xff0c;设计比赛日程表实现#xff1a;#xff08;1#xff09;每个选手必须与n-1个选手比赛#xff08;2#xff09;每个选手一天只比赛一场#xff08;3#xff09;比赛共进行n-1天输入#xff1a;n人输出#xff1a…1、问题描述有n2^k个远动员选手设计比赛日程表实现1每个选手必须与n-1个选手比赛2每个选手一天只比赛一场3比赛共进行n-1天输入n人输出n行n-1列第i行第j列表示第i个选手第j天遇到的对手不包含第一列表示为选手编号举例2人 1 2 2 12、问题分析通过化大为小分而治之的思想将多人的比赛日程缩小为2人的日程。以此倒推所有人的日程。注意多人日程规律以四人为例1 2 | 3 42 1 | 4 3----------3 4 | 1 24 3 | 2 1这样一个矩阵分为四个区左上和右下一样左下和右上一样且右上是左上对应的数字加了n/2.3、代码实现 1 #include stdio.h2 #include string.h3 4 #define N 1285 int matrix[N][N] {0};6 7 void fun(int n)8 {9 int i;
10 int j;
11 if (n0)
12 {
13 return;
14 }
15 if (n2)
16 {
17 fun(n/2);
18 for (i1;in/2;i)
19 {
20 for (jn/21;jn;j)
21 {
22 matrix[i][j] matrix[i][j-n/2] n/2;
23 }
24 }
25 for (in/21;in;i)
26 {
27 for (j1;jn/2;j)
28 {
29 matrix[i][j] matrix[i-n/2][jn/2];
30 }
31 }
32 for (in/21;in;i)
33 {
34 for (jn/21;jn;j)
35 {
36 matrix[i][j] matrix[i-n/2][j-n/2];
37 }
38 }
39 }
40 else
41 {
42 matrix[1][1] 1;
43 matrix[1][2] 2;
44 matrix[2][1] 2;
45 matrix[2][2] 1;
46 }
47 }
48
49 void main()
50 {
51 fun(8);
52
53 int i,j;
54 for (i1;i8;i)
55 {
56 for (j1; j8; j)
57 {
58 printf(%d ,matrix[i][j]);
59 }
60 printf(\n);
61 }
62 } http://blog.chinaunix.net/uid-26874207-id-4206383.html?utm_sourcejiancool 转载于:https://www.cnblogs.com/aabbcc/p/6508319.html