分治算法

使用分治法设计程序时,一般可按以下步骤进行:

  1. 分解:将要求解的问题划分成若干规模较小的同类问题。
  2. 求解:当子问题划分得足够小时,用较简单的方法解决。
  3. 合并:按求解问题的要求,将子问题的解逐层合并,即可构成最终的解。

乒乓球比赛赛程安排

运行过程:

  1. 由初始化的第一行填充第二行。


  2. 第一部分填完,进行第二部分的填充。


  3. 最后是第三部分的填充。


import java.util.Scanner;

public class pingPang {
    static int table[][]=new int[10][10];
    public static void f(int x,int y,int num) {
        if(num==1)
            return;
        num/=2;
        f(x,y,num);
        f(x+num,y,num);
        for(int i=0;i<num;i++) {
            for(int j=0;j<num;j++) {
                table[x+i+num][y+j+num]=table[x+i][y+j];
                table[x+i][y+j+num]=table[x+i+num][y+j];
            }
        }
    }
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();
        for(int r=1;r<=n;r++) {
            table[r][1]=r;
        }
        f(1,1,n);
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=n;j++) {
                System.out.print(table[i][j]+" ");
            }
            System.out.println();
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • https://www.cnblogs.com/steven_oyj/archive/2010/05/22/174...
    麒麟楚庄王阅读 591评论 0 0
  • 五大常用算法之一:分治算法 一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就...
    鲍陈飞阅读 1,251评论 0 4
  • http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741...
    RavenX阅读 468评论 0 1
  • Divide-and-Conquer算法的设计 设计过程分为三个阶段: Divide:整个问题划分为多个子问题 C...
    三三de酒阅读 3,465评论 0 4
  • 分冶算法的基本思想是将原问题分解为几个规模较小的但类似原问题的子问题,递归地求解这些了问题,然后再合并这些子问题的...
    某昆阅读 1,736评论 0 6