循环赛事日程表JAVA_java实现循环赛日程表
使用分治法的思想把N*N矩阵分成四块,然后分左上角和左下角求解,然后把左上角的矩阵块复制到右下角,左下角的矩阵块复制到右上角,然后对左下角和左下角的矩阵块使用分治法,递归下去,下面是Java实现:
package recursion;
public class CircleCompetition {
private int array[][];
public CircleCompetition(){
array=new int[8][8];
for(int i=0;i<8;i++)
array[i][0]=i+1;
}
public CircleCompetition(int n){
array=new int[n][n];
for(int i=0;i
array[i][0]=i+1;
}
/*
* a代表待求矩阵行的起始下标,b代表待求矩阵行的终止下标,下同
* i代表待求矩阵列的起始下标,j代表待求矩阵列的终止下标,下同
*/
public void arrange(int a,int b,int i,int j){
if(i
arrange(a, (int)(a+b-1)/2, i, (int)(j+i-1)/2);
arrange((int)(a+b+1)/2, b, i, (int)(j+i-1)/2);
merge(a,(int)(a+b-1)/2, i,(int)(j+i-1)/2, "top");
merge((int)(a+b+1)/2, b, i, (int)(j+i-1)/2, "bottom");
}
}
public void merge(int a,int b,int i,int j,String s){
int lenth=b-a+1;
if(s.equals("top")){
for(int p=a;p<=b;p++){
for(int q=i;q<=j;q++)
array[p+lenth][q+lenth]=array[p][q];
}
}
else if(s.equals("bottom")){
for(int p=a;p<=b;p++){
for(int q=i;q<=j;q++)
array[p-lenth][q+lenth]=array[p][q];
}
}
}
public void print(){
int n=array.length;
for(int i=0;i
for(int j=0;j
System.out.print(array[i][j]+" ");
System.out.println();
}
}
public static void main(String[] args) {
CircleCompetition circleCompetition=new CircleCompetition();
circleCompetition.arrange(0, 7, 0, 7);
circleCompetition.print();
}
}
循环赛事日程表JAVA_java实现循环赛日程表相关推荐
- 0008算法笔记——【分治法】循环赛事日程表
问题描述: 设有n=2^k个运动员要进行网球循环赛.现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次: (2)每个选手一天只能参赛一次: (3) ...
- 分治法解决循环赛事日程表(非常详细!)图文并茂-Java代码实现
题目: 设有n=2^k个运动员要进行网球循环赛.现要设计一各满足一下要求的比赛日程表: 1.每个选手必须与其他n-1个选手各比赛一次. 2.每个选手一天只能赛一次. 3.循环赛一共进行n-1天. 按照 ...
- 递归与分治策略算法之循环赛日程表
递归与分治策略算法之循环赛日程表 1.先简单的来介绍一下分治策略的思想 分治策略的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,分解出来的子问题与原问题相同,并且相互独立.通过递归去解决子 ...
- 分治法之循环赛日程表
问题描写叙述: 设有n(n = 2^k)位选手參加网球循环赛,循环赛共进行n-1天,每位选手要与 其它n-1位选手比赛一场,且每位选手每天必须比赛一场,不能轮空 ...
- 循环赛日程表非递归Java_王晓东《算法设计与分析》课件.ppt
<王晓东<算法设计与分析>课件.ppt>由会员分享,可在线阅读,更多相关<王晓东<算法设计与分析>课件.ppt(356页珍藏版)>请在人人文库网上搜索. ...
- 2.11 循环赛日程表
博主简介:一个爱打游戏的计算机专业学生 博主主页: @夏驰和徐策 所属专栏:算法设计与分析 目录 书本内容: 我的理解: 更优化的算法: 总结 1.注意实现问题 2.当用C语言和C++实现循环赛日程表 ...
- 任意人数的循环赛日程表 分治 非分治 c++
循环赛日程表 要求 设计一个满足以下要求的比赛日程表: 每个选手必须与其他n-1个选手各赛一次: 每个选手一天只能赛一次: 当n是偶数时,循环赛进行n-1天,当n是奇数时,循环赛进行n天: 举例 4位 ...
- 分治法解决循环赛日程表
分治法解决循环赛日程表 问题描述 设有n=2^k个运动员要进行羽毛球循环赛,现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次. (2)每个选手一天只能比赛一次. ( ...
- 循环赛日程表 (递归与分治)
文章目录 1.题目 2.问题分析 3.什么是分治 4.算法实现思路 1.对表进行分析 2.对表的实现 1.递归 2.循环 5算法实现代码 1.递归 2.循环 6.时间\空间复杂度 1.递归 1.空间复 ...
最新文章
- AJAX-nodemon自动重启工具安装
- struct和class之间问题(+引发的个人思考,和对共用体思考)
- android中利用实现二级联动的效果
- 日均请求量1.6万亿次背后,DNSPod的秘密-国密DoH篇
- Java中的Collections类– java.util.Collections
- 【学习笔记】用Mac自学虚幻4
- i510200h和i78750h哪个好
- mac接收gmail邮件_如何从您的Gmail帐户发送和接收Hotmail
- FinalShell连接VM出现channel is not opened.
- 风之谷mobi-宫崎骏漫画kindle7本
- 【转】我从罗振宇、脱不花得到的10点
- 微信小程序加载并且编译显示富文本编辑器内容
- 微信摇一摇抽奖的H5制作思路
- JDK Oracle 官网下载地址
- Educational Codeforces Round 119 (Rated for Div. 2) 做题日志
- [Pyecharts]数据可视化 大屏展示
- 动手学深度学习(四十)——长短期记忆网络(LSTM)
- 服务器如何修改3389端口,怎么修改服务器3389端口
- 基于angular.js的全年日历作物操作甘特图
- Spring之注解开发
热门文章
- EFT测试的实质及影响
- 考研日记--8.7--英语要开始啦
- Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理
- ubuntu18.4搭建samba文件共享服务
- 质量小议13 -- 侥幸
- Arduino基础入门之十二 LCD1602A初步显示
- Java初学笔记——18.Case12_个税计算
- 整理Windows Phone 7教程(很全面)
- Hexo 个人博客主题美化
- MongoDB学习总结(六) —— 数据库备份和恢复