整數劃分問題

public class test6 {
    //對n進行加法劃分,對n自己進行劃分無心義
    //a數組作個緩存,記錄劃分數據,k表示當前位置
    public static void f(int n,int a[],int k){
        //打印
        if (n<=0) {
            for (int i = 0; i < k; i++) {
                System.out.print(a[i]+" ");
            }
            System.out.println();
            return;
        }
        
        for (int i = n; i >0; i--) {
            if(k>0&&  a[k-1]<i) continue;//劃分時後一項要小於前一項
            a[k]=i;//將每一個劃分狀況的數字放入數組,剩下的又交給遞歸來作
            f(n-i, a, k+1);//n-i進行下一個數的劃分,k+1下一個位置繼續分解
        }        
    }        
public static void main(String[] args) {
    int[] a=new int [30];
    f(6, a, 0);
    }
}數組

相關文章
相關標籤/搜索