题目:
如,对于正整数n=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+1
现在的问题是,对于给定的正整数n,编写算法打印所有划分。
用户从键盘输入 n(范围1~10)
程序输出该整数的所有划分。
解答:
public class bc33_m {
static int num;
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("输入一个正整数:");
num=scan.nextInt();
for(int i=num;i>0;i--){
find(i,i,i+"");
System.out.println();
}
}
public static void find(int start,int sum,String res){
if(sum==num)
System.out.print(res+",");
if(sum>num)
return;
for(int i=start;i>0;i--){
find(i,sum+i,res+"+"+i);
}
}
}