码迷,mamicode.com
首页 > 编程语言 > 详细

1.5 分治算法

时间:2016-07-09 22:05:23      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

赛程安排

 1 #include <stdio.h>
 2 #define MAXN 64
 3 int a[MAXN+1][MAXN+1]={0};
 4 void gamecal(int k,int n)//处理编号k开始的n个选手的日程 
 5 {
 6     int i,j;
 7     if(n==2)
 8     {
 9         a[k][1]=k;  //参赛选手编号
10         a[k][2]=k+1; //对阵选手编号
11         a[k+1][1]=k+1; //参赛选手编号 
12         a[k+1][2]=k; //对阵选手编号 
13     }else{
14         gamecal(k,n/2);
15         gamecal(k+n/2,n/2);
16         for(i=k;i<k+n/2;i++) //填充右上角 
17         {
18             for(j=n/2+1;j<=n;j++)
19             {
20                 a[i][j]=a[i+n/2][j-n/2];
21             }
22         }
23         for(i=k+n/2;i<k+n;i++) //填充左下角 
24         {
25             for(j=n/2+1;j<=n;j++)
26             {
27                 a[i][j]=a[i-n/2][j-n/2];
28             }
29         }
30     }
31 }
32   
33 int main()
34 {
35     int m,i,j;
36     printf("输入参赛选手人数:");
37     scanf("%d",&m);
38     j=2;
39     for(i=2;i<8;i++)
40     {
41         j=j*2;
42         if(j==m) break;
43     }
44     if(i>=8)
45     {
46         printf("参赛选手人数必须为2的整数次幂,且不超过64!\n");
47         getch();
48         return 0; 
49     }
50     gamecal(1,m);
51     printf("\n编号 ");
52     for(i=2;i<=m;i++)
53         printf("%2d天 ",i-1);
54     printf("\n");
55     for(i=1;i<=m;i++)
56     {
57        for(j=1;j<=m;j++)
58            printf("%4d ",a[i][j]);
59        printf("\n");
60     }
61     getch();
62     return 0;    
63 }

 

1.5 分治算法

标签:

原文地址:http://www.cnblogs.com/wozixiaoyao/p/5656615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!