/*
* 5、数字分解
* * 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
*
*/
public class Test5 {
public static void main(String[] args) {
/*System.out.println("请输入一个数进行分解:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();*/
int n=6;
String num = "";
fenjie(n,num);
}
public static void fenjie(int n,String num){
if(n>=1){
for (int i = 1; i<n; i++) {
String str = num;//分解的字符串进行保存
num+=(n-i)+"+"+i;
String[] nums=num.split("\\+");//拆分字符串~用于去重复
boolean b = true;
//这个循环用来去重复
for (int j = 0; j < nums.length-1; j++) {
if(Integer.parseInt(nums[j])<Integer.parseInt(nums[j+1])){
b = false;
}
}
if(b){//如果字符串的后一个数比前一个数大就不打印
System.out.println(num);
}
num= num.substring(0,num.lastIndexOf("+")+1);//截取掉每次结果+后面的数
fenjie(i,num);//递归
num =str;//分支找不到了就还原 进行回溯
}
}
}
}
* 5、数字分解
* * 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
*
*/
public class Test5 {
public static void main(String[] args) {
/*System.out.println("请输入一个数进行分解:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();*/
int n=6;
String num = "";
fenjie(n,num);
}
public static void fenjie(int n,String num){
if(n>=1){
for (int i = 1; i<n; i++) {
String str = num;//分解的字符串进行保存
num+=(n-i)+"+"+i;
String[] nums=num.split("\\+");//拆分字符串~用于去重复
boolean b = true;
//这个循环用来去重复
for (int j = 0; j < nums.length-1; j++) {
if(Integer.parseInt(nums[j])<Integer.parseInt(nums[j+1])){
b = false;
}
}
if(b){//如果字符串的后一个数比前一个数大就不打印
System.out.println(num);
}
num= num.substring(0,num.lastIndexOf("+")+1);//截取掉每次结果+后面的数
fenjie(i,num);//递归
num =str;//分支找不到了就还原 进行回溯
}
}
}
}