Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1411397
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: C/C++

2014-04-11 22:34:39

1、问题描述:
有n=2^k个远动员选手,设计比赛日程表实现:
(1)每个选手必须与n-1个选手比赛
(2)每个选手一天只比赛一场
(3)比赛共进行n-1天
输入:n人
输出:n行n-1列,第i行第j列表示第i个选手第j天遇到的对手,不包含第一列表示为选手编号

举例:2人
     1   2
     2   1

2、问题分析
通过化大为小,分而治之的思想,将多人的比赛日程缩小为2人的日程。以此倒推所有人的日程。
注意多人日程规律:
以四人为例:
1 2 | 3 4
2 1 | 4 3
----------
3 4 | 1 2
4 3 | 2 1
这样一个矩阵分为四个区,左上和右下一样,左下和右上一样,且右上是左上对应的数字加了n/2.

3、代码实现

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <string.h>

  3. #define N 128
  4. int matrix[N][N] = {0};

  5. void fun(int n)
  6. {
  7.     int i;
  8.     int j;
  9.     if (n<=0)
  10.     {
  11.         return;
  12.     }
  13.     if (n>2)
  14.     {
  15.         fun(n/2);
  16.         for (i=1;i<=n/2;i++)
  17.         {
  18.             for (j=n/2+1;j<=n;j++)
  19.             {
  20.                 matrix[i][j] = matrix[i][j-n/2] + n/2;
  21.             }
  22.         }
  23.         for (i=n/2+1;i<=n;i++)
  24.         {
  25.             for (j=1;j<=n/2;j++)
  26.             {
  27.                 matrix[i][j] = matrix[i-n/2][j+n/2];
  28.             }
  29.         }
  30.         for (i=n/2+1;i<=n;i++)
  31.         {
  32.             for (j=n/2+1;j<=n;j++)
  33.             {
  34.                 matrix[i][j] = matrix[i-n/2][j-n/2];
  35.             }
  36.         }
  37.     }
  38.     else
  39.     {
  40.         matrix[1][1] = 1;
  41.         matrix[1][2] = 2;
  42.         matrix[2][1] = 2;
  43.         matrix[2][2] = 1;
  44.     }
  45. }

  46. void main()
  47. {
  48.     fun(8);
  49.     
  50.     int i,j;
  51.     for (i=1;i<=8;i++)
  52.     {
  53.         for (j=1; j<=8; j++)
  54.         {
  55.             printf("%d ",matrix[i][j]);
  56.         }
  57.         printf("\n");
  58.     }
  59. }
阅读(6357) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

prayer1632017-10-30 21:55:06

写的很清爽