java编程:从数组(1,2,4,6,9)中列出所有相加等于20的组合,例如9+9+2=20

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java编程:从数组(1,2,4,6,9)中列出所有相加等于20的组合,例如9+9+2=20相关的知识,希望对你有一定的参考价值。

//用个递归就行,给你个demo,拿去直接运行一下,如果有啥不懂的,留言
public class Test

public static void main(String[] args)
int[] arr = 1,2,4,6,9;
List<Integer> lst = new ArrayList<Integer>();
new Test().add(arr, 20, 5, lst);

/**
* @param arr 目标数组
* @param target 需要求和的值
* @param index 这个参数最为重要,这是为了保证消除重复遍历的情况,能够极大限度减少遍历次数
* @param cur 当前保存的路径
* */
public void add(int[] arr, int target ,int index, List<Integer> cur)
if( target < getMin(arr))
return;
else
for(int i = index-1 ; i >= 0 ; i -- )
if(arr[i] == target)
for(Integer o : copyAndAdd(cur,arr[i]))
System.out.print(o + ",");
System.out.println();
//输出等于20的路径

else
add(arr, target-arr[i], i+1 , copyAndAdd(cur,arr[i]));





//深拷贝一份list,并将新的node加入路径之中
public List<Integer> copyAndAdd(List<Integer> lst, int item)
List<Integer> cur_t = new ArrayList<Integer>();
cur_t.addAll(lst);
cur_t.add(item);
return cur_t;



public int getMin(int[] arr)
int k = Integer.MAX_VALUE;
if(null == arr || arr.length < 1)
return k;

for(int i = 0; i < arr.length; i++ )
if(arr[i] < k)
k = arr[i];


return k;


参考技术A 楼上有点懵逼,没这么复杂.给你看看我这种
public class Add
public static void main(String[] args)
int [] num=new int[]1,3,5,7,9,11,13,15;
System.out.println(Arrays.toString(num));
while(true)
int num1=num[(int)(Math.random()*8)];
int num2=num[(int)(Math.random()*8)];
int num3=num[(int)(Math.random()*8)];
System.out.println(num3);
if(num1+num2+num3==30)
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println("成功");
break;





自己看着改动吧,挺简单的本回答被提问者采纳
参考技术B public class Test1
public static void main(String[] args)
int a[]=new int[]1,2,4,6,9;
for(int i=0;i<a.length;i++)
for(int j=0;j<a.length;j++)
if((a[i]+a[j])==20)
System.out.println(a[i]+"+"+a[j]);
continue;

for(int k=0;k<a.length;k++)
if((a[i]+a[j]+a[k])==20)
System.out.println(a[i]+"+"+a[j]+"+"+a[k]);
continue;

for(int l=0;l<a.length;l++)
if((a[i]+a[j]+a[k]+a[l])==20)
System.out.println(a[i]+"+"+a[j]+"+"+a[k]+"+"+a[l]);
continue;

for(int m=0;m<a.length;m++)
if((a[i]+a[j]+a[k]+a[l]+a[m])==20)
System.out.println(a[i]+"+"+a[j]+"+"+a[k]+"+"+a[l]+"+"+a[m]);
continue;







参考技术C public class Test1 
    public static void main(String[] args) 
        int[] nums = 1,2,4,6,9;
        for(int i1=0;i1<nums.length;i1++) 
            for(int i2=0;i2<nums.length;i2++) 
                for(int i3=0;i3<nums.length;i3++) 
                    if(nums[i1]+nums[i2]+nums[i3] == 20) 
                        System.out.println(nums[i1]+","+nums[i2]+","+nums[i3]);
                    
                
            
        
    

yii2 从一个模型获取数据数组并在另一个模型中列出

【中文标题】yii2 从一个模型获取数据数组并在另一个模型中列出【英文标题】:yii2 Getting array of data from one model and listing it in view of another 【发布时间】:2016-12-29 10:17:16 【问题描述】:

在照片控制器中列出照片时,我可以使用函数获取用户数据

    public function getUser()
    
return $this->hasOne(User::className(), ['id' => 'uID']);

所以当我在视图中列出一些照片时,我可以使用

访问用户数据库
$model->user['username']

但是,如果我有这张照片的 cmets 数据库怎么办。并希望在列出照片时获得所有评论。

我应该在照片模型中写什么来获取这张照片的所有 cmets 以及如何在视图中列出它们?

在模型中我认为我必须使用这个

public function getComments()

    $modelComments = Comments::find()->where(['id'=>'commentID'])->all();
    return [array('modelComments' => $modelComments)];

如果这是正确的,我如何根据照片输出所有 cmets?

【问题讨论】:

【参考方案1】:

$model-&gt;user['username'] 是否有效?应该是$model-&gt;user-&gt;username

无论如何设置照片和 cmets 之间的关系,例如与用户但一对多。

public function getComments()

    return $this->hasMany(Comments::className(), ['id' => 'commentID']);

现在当调用$model-&gt;comments 时,您将获得与照片相关的所有Comments 模型的数组。

显示它们的最简单方法是遍历这个数组,例如:

foreach ($model->comments as $comment) 
    echo $comment->content . '<br>';
    // assuming column name with actual comment is "content"

【讨论】:

好的,但是你能写下我如何在照片视图中绘制这个数组的例子吗? @Bizley Does $model-&gt;user['username'] work at all? It should be $model-&gt;user-&gt;username.。答案是肯定的。无论如何,作为您答案的补充:@David:在获得所有 cmets 后,您只需要使用例如循环遍历 cmets foreach. @David 我添加了示例 非常感谢! :)

以上是关于java编程:从数组(1,2,4,6,9)中列出所有相加等于20的组合,例如9+9+2=20的主要内容,如果未能解决你的问题,请参考以下文章

C++编程,从键盘输入两个数组,求两个数组的交集并输出。

Java 从入门到精通(第4版)第6章 数组

如何将一个数组的值按逆序重新存放于原数组中,并输出。例如:原来顺序为3,6,5,4,9改为9,4?

Java 二维数组

java怎么从数组a中随机选取几个数放入数组b中,急

java程序,帮我写一个。把数组元素按照从大到小