蓝桥杯:整数的分划问题

题目:

如,对于正整数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);
		}
	}
}


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/Jayme/p/4902368.html