使用分治法的思想把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实现循环赛日程表相关推荐

  1. 0008算法笔记——【分治法】循环赛事日程表

    问题描述: 设有n=2^k个运动员要进行网球循环赛.现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次:      (2)每个选手一天只能参赛一次:      (3) ...

  2. 分治法解决循环赛事日程表(非常详细!)图文并茂-Java代码实现

    题目: 设有n=2^k个运动员要进行网球循环赛.现要设计一各满足一下要求的比赛日程表: 1.每个选手必须与其他n-1个选手各比赛一次. 2.每个选手一天只能赛一次. 3.循环赛一共进行n-1天. 按照 ...

  3. 递归与分治策略算法之循环赛日程表

    递归与分治策略算法之循环赛日程表 1.先简单的来介绍一下分治策略的思想 分治策略的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,分解出来的子问题与原问题相同,并且相互独立.通过递归去解决子 ...

  4. 分治法之循环赛日程表

    问题描写叙述:             设有n(n = 2^k)位选手參加网球循环赛,循环赛共进行n-1天,每位选手要与         其它n-1位选手比赛一场,且每位选手每天必须比赛一场,不能轮空 ...

  5. 循环赛日程表非递归Java_王晓东《算法设计与分析》课件.ppt

    <王晓东<算法设计与分析>课件.ppt>由会员分享,可在线阅读,更多相关<王晓东<算法设计与分析>课件.ppt(356页珍藏版)>请在人人文库网上搜索. ...

  6. 2.11 循环赛日程表

    博主简介:一个爱打游戏的计算机专业学生 博主主页: @夏驰和徐策 所属专栏:算法设计与分析 目录 书本内容: 我的理解: 更优化的算法: 总结 1.注意实现问题 2.当用C语言和C++实现循环赛日程表 ...

  7. 任意人数的循环赛日程表 分治 非分治 c++

    循环赛日程表 要求 设计一个满足以下要求的比赛日程表: 每个选手必须与其他n-1个选手各赛一次: 每个选手一天只能赛一次: 当n是偶数时,循环赛进行n-1天,当n是奇数时,循环赛进行n天: 举例 4位 ...

  8. 分治法解决循环赛日程表

    分治法解决循环赛日程表 问题描述 设有n=2^k个运动员要进行羽毛球循环赛,现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次. (2)每个选手一天只能比赛一次. ( ...

  9. 循环赛日程表 (递归与分治)

    文章目录 1.题目 2.问题分析 3.什么是分治 4.算法实现思路 1.对表进行分析 2.对表的实现 1.递归 2.循环 5算法实现代码 1.递归 2.循环 6.时间\空间复杂度 1.递归 1.空间复 ...

最新文章

  1. AJAX-nodemon自动重启工具安装
  2. struct和class之间问题(+引发的个人思考,和对共用体思考)
  3. android中利用实现二级联动的效果
  4. 日均请求量1.6万亿次背后,DNSPod的秘密-国密DoH篇
  5. Java中的Collections类– java.util.Collections
  6. 【学习笔记】用Mac自学虚幻4
  7. i510200h和i78750h哪个好
  8. mac接收gmail邮件_如何从您的Gmail帐户发送和接收Hotmail
  9. FinalShell连接VM出现channel is not opened.
  10. 风之谷mobi-宫崎骏漫画kindle7本
  11. 【转】我从罗振宇、脱不花得到的10点
  12. 微信小程序加载并且编译显示富文本编辑器内容
  13. 微信摇一摇抽奖的H5制作思路
  14. JDK Oracle 官网下载地址
  15. Educational Codeforces Round 119 (Rated for Div. 2) 做题日志
  16. [Pyecharts]数据可视化 大屏展示
  17. 动手学深度学习(四十)——长短期记忆网络(LSTM)
  18. 服务器如何修改3389端口,怎么修改服务器3389端口
  19. 基于angular.js的全年日历作物操作甘特图
  20. Spring之注解开发

热门文章

  1. EFT测试的实质及影响
  2. 考研日记--8.7--英语要开始啦
  3. Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理
  4. ubuntu18.4搭建samba文件共享服务
  5. 质量小议13 -- 侥幸
  6. Arduino基础入门之十二 LCD1602A初步显示
  7. Java初学笔记——18.Case12_个税计算
  8. 整理Windows Phone 7教程(很全面)
  9. Hexo 个人博客主题美化
  10. MongoDB学习总结(六) —— 数据库备份和恢复