一个整数可以写成多个整数相加的形式,比如4可以写成以下形式
4=4
4=3+1
4=2+2
4=2+1+1
4=1+1+1+1
注意 4=3+1和4=1+3是一样的,现在多加一个要求,即等式右边的数不能相同,问怎么划分
import java.util.Scanner;
public class ZhengShuHuaFen {
static int[] arr;
static int s;
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("输入需要拆分的数");
s=input.nextInt();
arr=new int[s];
chai(0,1);
}
public static void chai(int sum,int n){ //整数拆分,目前的和sum,第n次拆
if(s==sum){ //拆的数和等于要拆的数,输出
System.out.print(s+"=");
for (int i = 0; i < n-1; i++) {
if(i==0){
System.out.print(arr[i]);
}
else {
System.out.print("+"+arr[i]);
}
}
System.out.println();
return;
}
else if(s<sum){ //拆的数和大于要拆的数,返回
return;
}
else{
for (int i = 1; i <= s; i++) { //拆的数和不大于不等于要拆的数,继续拆
if(n>=2){
if(arr[n-2]>=i){
arr[n-1] = i;
chai(sum + i, n + 1);
}
}else{
arr[n-1] = i;
chai(sum + i, n + 1);
}
}
}
}
}