import java.util.Scanner;
/**
* @author:Ravanla
* @vreate:2019-10-27-13:16
*/
public class FenPingGuo {
int n;
int[] A;
public FenPingGuo(){
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
A = new int[n + 2];
A[0] = n;
fun(1, n);
}
void fun(int index, int n1) {
for(int i = A[index - 1]; i > 0; i--){
n1 -= i;// n1 用来计算与i相减后的和 判断是否还有下一个数能放在index位
// 如果n1 小于0 的话就代表没又找到对应的数
// 相对与试探
if (n1 >= 0) {
A[index] = i;// 把这个数放到对应index的位置
if (n1 == 0) {// 如果相互减完了 就打印
for(int j = 1; j <= index; j++)
System.out.print(A[j] + " ");
System.out.println(" ");
}else {// 还没有减完就找下一个位置
fun(index + 1, n1);
}
}
n1 += i;
// 回溯
}
}
public static void main(String[] args) {
FenPingGuo f = new FenPingGuo();
}
}
JAVA--划分数字--带动态图
最新推荐文章于 2021-02-19 12:24:20 发布