分治法实现循环赛日程安排问题

本文介绍了如何运用分治法设计一个满足特定要求的网球循环赛日程表,并实现了成绩输入与输出的功能。通过C语言程序展示了如何创建日程表、输出日程、输入比赛结果、统计并排序成绩。文章还探讨了成绩录入的思路,通过冒泡排序确定获胜者。
摘要由CSDN通过智能技术生成

题目:
设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能参赛一次; (3)循环赛在n-1天内结束。 请按此要求将比赛日程表设计成有n行和n-1列的一个表,最后在完成比赛结果的输入和最终成绩的输出。在表中的第i行,第j列处填入第i个选手在第j天所遇到的选手。其中1≤i≤n,1≤j≤n-1。8个选手的比赛日程表如下图:在这里插入图片描述
!!! 我这个对原题目有一些改动,自己加了成绩的输入和结果的输出
源代码:
#include<stdio.h>
#include<math.h> //pow函数
void Table(int k,int a[100][100]){//日程表函数
int t,n=2,i,j;
a[1][1]=1,a[1][2]=2;//初始化最小表格
a[2][1]=2,a[2][2]=1;
for(t=1;t<k;t++){//循环 k 次后得到的次数为 2 的 k+1 个格子 ,因此只需要循环 k-1 次 。
int temp=n;
n=n2;
for(i=temp+1;i<=n;i++)//根据左上写左下
for(j=1;j<=temp;j++)
a[i][j]=a[i-temp][j]+temp;//数之间的规律:与上一块

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值