62,614
社区成员
发帖
与我相关
我的任务
分享
if (index <= arr.Length && remnant == 0)
{
for (int i = 0; i < index - 1; i++)
{
System.out.print(arr[i] + " + ");
}
System.out.println(arr[index - 1]);
}
for (int i = 1; i <= remnant && i <= maxNum; i++)
{
arr[index] = i;
divideNumber(arr, index + 1, i, remnant - i);
}
public static void solve(int i){
innerSolve(i, i, 1, "");
}
private static void innerSolve(int tatol, int n, int min, String result){
if (n == 0){
System.out.println(tatol + " = " + result.substring(1));
}
else if (n >= min){
innerSolve(tatol, n - min, min, result + "+" + min);
innerSolve(tatol, n, min + 1, result);
}
}
public static void divideNumber(int n)
{
int[] arr = new int[n];
divideNumber(arr, 0, 6, 6);
}
//往数组中填充数字, index为待添位, maxNum 为能填入的最大值, remnant 为剩余数字
public static void divideNumber(int[] arr, int index, int maxNum, int remnant)
{
if (index <= arr.Length && remnant == 0)
{
for (int i = 0; i < index - 1; i++)
{
System.out.print(arr[i] + " + ");
}
System.out.println(arr[index - 1]);
}
else
{
for (int i = 1; i <= remnant && i <= maxNum; i++)
{
arr[index] = i;
divideNumber(arr, index + 1, i, remnant - i);
}
}
}
public class t11 {
public static void fun(int[] str, int n, int m) {
if (n == 0) {
for (int i = 0; i <= m - 1; i++) {
if (i == (m - 1))
System.out.println(str[i]);
else
System.out.print(str[i] + " ");
}
} else {
for (int i = n; i >= 1; i--) {
if (m == 0 || i <= str[m - 1]) {
str[m] = i;
fun(str, n - i, m + 1);
}
}
}
}
public static void main(String[] args) {
fun(new int[6], 6, 0);
}
}