整数划分问题

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);
    }
}数组

相关文章
相关标签/搜索