java - 获取加起来等于给定数字的所有可能的总和

标签 java algorithm math partition-problem

我正在为安卓开发一个数学应用。在这些字段之一中,用户可以输入一个 int(无数字且大于 0)。这个想法是获得所有可能的和,使这个 int,没有 double (在这种情况下为 4+1 == 1+4)。唯一已知的是这个 int。

例如:

假设用户输入 4,我希望应用返回:

  • 4
  • 3+1
  • 2+2
  • 2+1+1
  • 1+1+1+1

显然 4 == 4 所以也应该添加。关于我应该如何着手做这件事有什么建议吗?

最佳答案

这是一个声称可以做到这一点的简单算法

来自:http://introcs.cs.princeton.edu/java/23recursion/Partition.java.html

public class Partition { 

    public static void partition(int n) {
        partition(n, n, "");
    }
    public static void partition(int n, int max, String prefix) {
        if (n == 0) {
            StdOut.println(prefix);
            return;
        }

        for (int i = Math.min(max, n); i >= 1; i--) {
            partition(n-i, i, prefix + " " + i);
        }
    }


    public static void main(String[] args) { 
        int N = Integer.parseInt(args[0]);
        partition(N);
    }

}

关于java - 获取加起来等于给定数字的所有可能的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331093/

相关文章:

c# - "Realistic"乒乓球碰撞

java - 从 groovy 调用 java 代码的问题

java - JOptionPane 数组元素

c# - Enumerable.Range(...).Any(...) 优于基本循环 : Why?

php - 生成不同的组合 PHP

python - 推荐一种有效的数据结构,用于在列表中存储大量重复值

math - 如何在我自己的服务器上托管 Google 图像图表?

根据浏览量/评论计算页面重要性的算法

java - 不变性是否意味着引用不能更改

java - Jhipster实体生成错误