算法设计 您所在的位置:网站首页 循环函数有哪些 算法设计

算法设计

2023-05-20 00:26| 来源: 网络整理| 查看: 265

 2022北京冬奥会在新冠疫情肆虐的情况下仍然成功举办,体现了我们国家和组织者的集体智慧。假设有项体育比赛有N=14个队伍需要和其他N-1=13只队伍进行循环赛,

如果偶数个队伍,每个队伍每天捉对赛一场,共进行N-1=13天比赛;

奇数个队伍会出现每天有一个队轮空,连续进行N=14天比赛;请编程输出每天的比赛安排。

(1)每个选手必须与其他n-1个选手各赛一次;

(2)每个选手一天只能赛一次;

(3)当n 是偶数,循环赛进行n-1天,当n是奇数,循环赛进行n天

方法1:多边形算法

 

package xunhuansai; // 声明包名 //Molly import java.util.Scanner; // 导入Scanner类 public class RoundMatches { // 声明一个名为RoundMatches的公共类 public static void main(String[] args) { // 声明主方法 Scanner sc = new Scanner(System.in); // 创建Scanner对象 int n = sc.nextInt(); // 从控制台读取一个整数 makeTable(n); // 调用makeTable方法 } private static void makeTable(int num) { // 声明一个名为makeTable的私有静态方法,入参为整型num int days = num - (num + 1) % 2; // 计算比赛天数 for (int i = 0; i < days; i++) { // 循环比赛天数次 System.out.println("第" + (i + 1) + "天对局情况:"); // 输出比赛天数 int len = num - 1; // 初始化len变量 for (int j = 0; j < num / 2; j++) { // 循环比赛场次 System.out.println(((i + j) % num + 1) + " " + ((i + j + len) % num + 1)); // 输出比赛对局情况 len -= 2; // 更新len变量的值 } } } }

 

方法2:分治算法

限制条件:队伍数量必须是2K,否则无法划分!

//Molly #include #include #define N 50 int a[N][N]; //定义二维数组a用于存储生成的日程表 void Table(int k); //生成日程表的函数 void print(int k); //输出二维数组 main() { int k; printf("请输入k 的值:"); scanf("%d",&k); //输入参与制作日程表的人数k Table(k); //调用Table函数生成日程表 print(k); //调用print函数输出日程表 } void Table(int k)//数组下标从1开始 { int i,j,s,t; int n=1; for(i=1;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有