例如:
6可以划分为:
6
5 1
4 2
4 1 1
3 3
3 2 1
3 1 1 1
2 2 2
2 2 1 1
2 1 1 1 1
1 1 1 1 1 1
5可以划分为:
5
4 1
3 2
3 1 1
2 2 1
2 1 1 1
1 1 1 1 1
public class a {
//对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 && i>a[k-1]) continue;
a[k] = i;
f(n-i,a,k+1);
}
}
public static void main(String[] args){
int[] a = new int[1000];
f(6,a,0);
}
}