作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Authomata 工作,需要三个求和等于 n 的数字例如,如果 n = 2,我需要的数字是:
200
020
002
110
101
011
组合是否重复并不重要。
如果 n = 3 我需要:
300
030
003
210
201
021
120
012
102
111
所以我读到这类似于数论中的划分,但我可以得到只有 3 个数字给我目标值 (n) 的特殊情况。 (代码来 self 在这里得到的一个例子)
package automata2;
import java.util.ArrayList;
/**
*
* @author jaime
*/
public class Automata2 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int N = 14;
partition(N);
}
public static void partition(int n) {
partition(n, n, "");
}
public static void partition(int n, int max, String prefix) {
if (n == 0) {
System.out.println(prefix);
return;
}
for (int i = Math.min(max, n); i >= 1; i--) {
partition(n-i, i, prefix + " " + i);
}
}
}
但我只需要三位数的所有组合,不是所有的组合,因为 14 直到 1 1 1 1 1 1 1 1 1 1 1 1 1 1
最佳答案
生成数字的算法是这样的。此代码将生成所有编号。
public class main1 {
public static void main(String args[]) {
int N = 5, n1, n2, n3;
for (n1 = 0; n1 <= N; n1++) {
for (n2 = 0; n2 <= N; n2++) {
for (n3 = 0; n3 <= N; n3++) {
if ( (n1+n2+n3)==N ) {
System.out.println(n1 + " " + n2 + " " + n3);
}
}
}
}
}
}
您可以做的是代替 System.out.println(n1+" "+n2+" "+n3)
,您可以将数字存储在数组列表中,然后排列列表。
关于java - 如何在所有可能的组合中找到 3 个数字,总和结果等于 n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25107860/
我是一名优秀的程序员,十分优秀!