打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
整数拆分

/*******************************************************
 * 整数拆分
 */
public class Divide {
    public static void divide(int[] a, int total, int current, int k, int sum) {
  for (int i = current; i >= 1; i--) {
   if (k > 0) {
    if (i <= a[k - 1]) {
     if (sum + i == total) {
      a[k] = i;
      System.out.print("[");
            for (int j = 0; j <= k; j++) {
                System.out.printf("%d, ", a[j]);
            }
      System.out.println("]");
        } else if (sum + i < total) {
            a[k] = i;
      divide(a, total, current - i, k + 1, sum + i);
        }
    }
   } else {
    if (sum + i == total) {
     a[k] = i;
     System.out.print("[");
           for (int j = 0; j <= k; j++) {
               System.out.printf("%d, ", a[j]);
           }
     System.out.println("]");
       } else if (sum + i < total) {
           a[k] = i;
     divide(a, total, current - i, k + 1, sum + i);
       }
   }

  }
 }

 public static void main(String[] args) {
  int n = 4;
  int[] data = new int[n];
  divide(data, n, n, 0, 0);
 }
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
对台阶步数问题的数学分析及更优解探索
C语言初学者需要练习的几个程序,老司机深有体会
日志
程序设计基础及面向对象编程练习题
Day2 第七个知识点 练习2
JAVA大数处理(BigInteger,BigDecimal)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服