用C语言程序进行比赛日程排列

发布时间:2024-11-26 10:26

学习编程语言如Unity或C# #生活乐趣# #游戏乐趣# #游戏开发#

最新推荐文章于 2024-07-17 17:53:33 发布

Pocket~ 于 2020-02-11 13:02:19 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

用C语言程序进行比赛日程排列

#include <stdio.h> #define MAXN 64 int a[MAXN+ 1][MAXN +1] = {0}; // 定义全局的数组,最多安排64个选手的比赛日程 void gamecal(int k, int n)// 定义赛程安排的函数,k表示需要安排的选手起始的序号 n表示需要安排选手的数量 { // 若k为1,n为4表示四个选手排序,从第1个起。int i, j;if(n == 2) // n== 2 ,两位选手 直接安排赛程。{a[k][1] = k; // 参赛选手编号a[k][2] = k+1; // 对阵选手的编号a[k+1][1] = k+1; //参赛选手编号a[k+1][2] = k; // 对阵选手编号} else{ // 若不是2个选手。gamecal(k,n/2); // 分治 举例: 若此时k=1,n=4 ,排1,2选手gamecal( k + n/2, n/2); // 分治 安排3,4选手for( i = k; i< k+n/2; i++)// 合并 填充右上角{for(j = n/2+1; j<=n; j++) {a[i][j] = a[i +n/2][j - n/2];}}for( i = k+n/2; i< k+n; i++)// 合并 填充左下角{for(j = n/2+1; j<=n; j++) {a[i][j] = a[i - n/2][j - n/2]; // a[i + n/2][j - n/2] ——> a[i - n/2][j - n/2]}}} } int main() {int m,i,j;printf("输入参赛选手人数: ");scanf("%d",&m) ;j = 2; //定义为2的整数幂for(i=2;i < 8; i++){j = j*2;if(j == m)break;}if(i >= 8){printf("参赛选手必须为2的整数次幂,且不超过64! \n");getch();return 0;}gamecal(1,m);printf("\n编号 ");for (i = 2; i<=m; i++)printf("%2d天",i-1);printf("\n");for(i = 1;i<= m; i++){for(j = 1; j<= m; j++)printf("%4d", a[i][j]);printf("\n");}getch();return 0; }

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

网址:用C语言程序进行比赛日程排列 https://www.yuejiaxmz.com/news/view/278637

相关内容

C语言程序设计(100道编程题)
c语言原程序如下intx=496;printf('*%
行程管理系统 c语言
『编程语言区』
用c语言实现旅行商问题的c
执行下列程序后(CX)=
【宝藏系列】嵌入式 C 语言代码优化技巧【超详细版】
C语言基础
12 个最佳日程规划应用程序、工具和软件 (2024)
10个最佳Mac日历应用程序,帮助您计划和安排

随便看看