package test;
import java.util.Scanner;
public class test {
static int i=0;
public int divid(int n,int m) {
// TODO 自动生成的构造函数存根
i++;
System.out.println("i = "+i);
if(n<1||m<1) return 0;
else if(n==1||m==1) return 1;
else if(n<m) {
System.out.println("divid("+n+","+m+")->divid("+n+","+n+")");
return divid(n,n);
}
else if(n==m) {
System.out.println( "divid(" +n+ "," +m+ ")->divid(" +n+ "," +(m-1)+ ")+1");
return divid(n,m-1)+1;
}
else {
System.out.println("divid("+n+","+m+")->divid("+n+","+(m-1)+")+divid("+(n-m)+","+m+")");
return divid(n,m-1)+divid(n-m,m);
}
}
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
test t = new test();
int n = scan.nextInt();
int m = scan.nextInt();
System.out.println(t.divid(n,m));
}
}
算法导论复习→分治策略→整数划分问题
最新推荐文章于 2021-11-22 00:07:25 发布