首页 > 代码库 > 最容易理解的划分数算法

最容易理解的划分数算法

这是划分数的常见解法


上面的解法我完全没有理解,怎么都没有理解怎么会想到这样去做递归,智商太低没办法。

但是没有关系,我还是绞尽脑汁想到了一种方法,即使常见的构建回溯树的方式。虽然消耗了些多余的空间,但是也算不错,代码简单有用。


当求 4的划分数时我是这样构建树的:大笑(在只是画了两层,如下的树我们则可以用来遍历求和,如果和等于 4则划分数 +1)


                                                              



 

 public class HuaFen{
  
       public int num; //需要划分的个数    
       //n表示需要划分的值, m表示迭代到的层数,count表示当前的总和
       public  void  huaFen(int n,int m,int count){
           
          for( ; m<=n;m++){
               //如果大于了我们需要的值则往上走吧,不需要再往下走了
               System.out.println("count"+count);
              if(count+m>n ){
              }
 
              if(count+m==n ){
                  num++;
              }
 
              if(count+m<n){
                  huaFen(n,m,count+m);
              }
          }
          
 
 
      }
 
    
      public static void main(String args[]){
 
          HuaFen huan = new HuaFen();
          huan.huaFen(7,1,0);
          System.out.println(huan.num);
      }
  }




最容易理解的划分数算法