java实现数组的所有组合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现数组的所有组合相关的知识,希望对你有一定的参考价值。

用java实现一个取数据组的所有组合,比喻一个数组 int[] array = 1,2,3,4,5我输入一个3,它就把此数组当中所有以3个元素组合的数组返回返回的数组应该是1,2,3 1,2,3 1,2,5 1,3,4 1,3,5 1,4,52,3,4 2,3,5 2,4,53,4,5当然出可以其他方式返回,比喻List返回也可,只要能取出组合方式就行

参考技术A 细节上需要改进。import java.util.*;
public class Map
Vector<int[]> v = new Vector<int[]>();
Vector<Integer> vv = new Vector<Integer>(); Map()
int[] array = 1, 2, 3, 4, 5 ;
Scanner s = new Scanner(System.in);
int x = s.nextInt();
pro(array, 0, x);
for(int i=0;i<v.size();i++)
int[] r=v.get(i);
for(int j=0;j<r.length;j++)
System.out.print(""+r[j]+",");

System.out.println();

public void pro(int[] a, int start, int n)
if (n == 0)
int[] r = new int[vv.size()];
for (int i = 0; i < r.length; i++)
r[i] = vv.get(i);

v.add(r);
return;

if (start >= a.length)
return;

for (int i = start; i < a.length; i++)
vv.add(a[i]);
pro(a, i + 1, n - 1);
vv.remove(vv.size()-1);

public static void main(String arg[])
new Map();

参考技术B 最简单的办法是三层循环 参考技术C 去我c02949.blog.163.com递归,完美输出所有组合.任意多位,任意数,重复晃重重复. 楼上的方法对你这个是最好的,如果变换就很麻烦.

python 给定数组任意组合等于一个定值的所有解

抛出问题:

  求给定数组任意组合等于一个定值的所有解 例如列表l = [1, 2, 3, 4, 5],求任意组合的结果为10的所有答案

问题分析:

  实际就是列表的所有排列组合,然后算出每个排列组合的值,记录等于所求值的组合结果。

  代码实现就是先生成和 l 等长的全0列表,0表示,列表该位置数不取,1表示列表该位置数取,就这样一直递归,一直到全1

# -*- coding:utf-8  -*-
# 日期:2018/6/11 7:30
# Author:小鼠标
# 求给定数组任意组合等于一个定值的所有解
list = [1, 2, 3, 4, 5]
val = 10
# 生成等长的全0列表
x = [0 for i in range(0,len(list))]

# 递归方法 x 记录列表取跟不取,i表示当前递归的位置,has表示当前所有取的值的和
def get_val(x,i,has):
    if i > len(x) - 1:
        return
    if has + list[i] == val:
        #符合条件记录
        x[i] = 1
        print(x)
        x[i] = 0
    # 当前位置取 执行一次
    x[i] = 1
    get_val(x,i+1,has+list[i])
    # 当前位置不取 执行一次
    x[i] = 0
    get_val(x, i + 1, has)
get_val(x,0,0)

# ===========结果=========
# [1, 1, 1, 1, 0]  》》》[1,2,3,4] 1+2+3+4=10
# [1, 0, 0, 1, 1]  》》》[1,4,5] 1+4+5=10
# [0, 1, 1, 0, 1]  》》》[2,3,5] 2+3+5=10

 

以上是关于java实现数组的所有组合的主要内容,如果未能解决你的问题,请参考以下文章

java、获得数组的全部组合

Java实现随机生成由字母数字组合的N位随机数

JAVA中的数组合并问题

关于各种排列组合java算法实现方法

华为OD机试真题 JS 实现组合出合法最小数2023 Q1 | 100分

js两个数组排列组合