gpt4 book ai didi

java - 如何在java中创建动态嵌套循环?

转载 作者:行者123 更新时间:2023-12-02 01:27:53 24 4
gpt4 key购买 nike

我正在尝试使用 for 循环 以动态方式添加所有组合的数组列表值。例如,可以通过嵌套循环在数组中添加两个元素组合。类似地,3,4,5,6,7,8之类的组合加法需要动态循环生成。我能做什么?

static int birthday(List<Integer> s, int d, int m) {

int l=s.size();
int count=0;
int a[]=new int[l];
for (int x=0; x<l; x++){
a[x]=s.get(x);
}
if(m==2){
for (int i=0; i<l; i++){
for (int j=i+1; i<l; i++){
if(a[i]+a[j]==d){
count++;
}
}
}
}
else if(m==1){
count++;
}
return count;
}

以上代码适用于 1 和 2 组合以及所有 3,4,...10。我想生成动态 for 循环。请给出解决方案。

最佳答案

您可以使用递归:

static int birthday(List<Integer> s, int d, int m) {
int l=s.size();
int a[]=new int[l];
for (int x=0; x<l; x++){
a[x]=s.get(x);
}
return birthday(a, d, m, 0, 0);
}

private static int birthday(int[] a, int d, int m, int start, int sum) {
if (m == 0) {
return sum == d ? 1 : 0;
}
int count=0;
for (int i = start; i <= a.length-m; ++i) {
count += birthday(a, d, m-1, i+1, sum+a[i]);
}
return count;
}

如果您对数组进行排序并且可以假设列表中的所有元素都是正数,则可以进行一些优化。

关于java - 如何在java中创建动态嵌套循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56592887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com