从给定的数组合不重复的数要怎么弄???

有4张万能卡片
每张卡片都能变成1-10的数字
怎么生成出所有的组合???
像1,1,1,2和2,1,1,1
1,2和2,1
1,1,3和3,1,1
生成一个就够了
因为是重复的

怕说的不清楚,这里补充一下
是4张万能卡片
没个卡片取一个数出来
换算一下就是
4个数组
a1 = [1,2,3,4,5,6,7,8,9,10]
a2 = [1,2,3,4,5,6,7,8,9,10]
a3 = [1,2,3,4,5,6,7,8,9,10]
a4 = [1,2,3,4,5,6,7,8,9,10]
每个数组取一个数
生成不重复的所有组合

粗暴一点的办法就是对所有组合排序,比如2943这种组合升降排序,如2943>9432,然后再去重

洗牌算法吗?参考 Knuth-Shuffle

mark!!

这个不就是整数划分吗?4张牌1-10,那最大值不就是10+10+10+10=40。
一个for循环4-40,然后找到划分次数<=4次的划分,每行取一个不就得出来了吗。

大佬能贴一下代码吗。。。
我是菜鸟。。。 :sob:

百度了一下。。。
好像。。。不太像哎。。。 :sob:

百度找到了
好像是这个
谢谢大佬

上学时候写的代码,比较烂,你百度一下整数划分随便改一下就可以。
4=1+1+1+1
5=2+1+1+1
6=3+1+1+1
6=2+2+1+1
7=4+1+1+1
7=3+2+1+1
7=2+2+2+1
8=5+1+1+1
8=4+2+1+1
8=3+3+1+1
8=3+2+2+1
8=2+2+2+2
9=6+1+1+1
9=5+2+1+1
9=4+3+1+1
9=4+2+2+1
9=3+3+2+1
9=3+2+2+2
10=7+1+1+1
10=6+2+1+1
10=5+3+1+1
10=5+2+2+1
10=4+4+1+1
10=4+3+2+1
10=4+2+2+2
10=3+3+3+1
10=3+3+2+2
11=8+1+1+1
11=7+2+1+1
11=6+3+1+1
11=6+2+2+1
11=5+4+1+1
11=5+3+2+1
11=5+2+2+2
11=4+4+2+1
11=4+3+3+1
11=4+3+2+2
11=3+3+3+2
12=9+1+1+1
12=8+2+1+1
12=7+3+1+1
12=7+2+2+1
12=6+4+1+1
12=6+3+2+1
12=6+2+2+2
12=5+5+1+1
12=5+4+2+1
12=5+3+3+1
12=5+3+2+2
12=4+4+3+1
12=4+4+2+2
12=4+3+3+2
12=3+3+3+3
13=10+1+1+1
13=9+2+1+1
13=8+3+1+1
13=8+2+2+1
13=7+4+1+1
13=7+3+2+1
13=7+2+2+2
13=6+5+1+1
13=6+4+2+1
13=6+3+3+1
13=6+3+2+2
13=5+5+2+1
13=5+4+3+1
13=5+4+2+2
13=5+3+3+2
13=4+4+4+1
13=4+4+3+2
13=4+3+3+3
14=10+2+1+1
14=9+3+1+1
14=9+2+2+1
14=8+4+1+1
14=8+3+2+1
14=8+2+2+2
14=7+5+1+1
14=7+4+2+1
14=7+3+3+1
14=7+3+2+2
14=6+6+1+1
14=6+5+2+1
14=6+4+3+1
14=6+4+2+2
14=6+3+3+2
14=5+5+3+1
14=5+5+2+2
14=5+4+4+1
14=5+4+3+2
14=5+3+3+3
14=4+4+4+2
14=4+4+3+3
15=10+3+1+1
15=10+2+2+1
15=9+4+1+1
15=9+3+2+1
15=9+2+2+2
15=8+5+1+1
15=8+4+2+1
15=8+3+3+1
15=8+3+2+2
15=7+6+1+1
15=7+5+2+1
15=7+4+3+1
15=7+4+2+2
15=7+3+3+2
15=6+6+2+1
15=6+5+3+1
15=6+5+2+2
15=6+4+4+1
15=6+4+3+2
15=6+3+3+3
15=5+5+4+1
15=5+5+3+2
15=5+4+4+2
15=5+4+3+3
15=4+4+4+3
16=10+4+1+1
16=10+3+2+1
16=10+2+2+2
16=9+5+1+1
16=9+4+2+1
16=9+3+3+1
16=9+3+2+2
16=8+6+1+1
16=8+5+2+1
16=8+4+3+1
16=8+4+2+2
16=8+3+3+2
16=7+7+1+1
16=7+6+2+1
16=7+5+3+1
16=7+5+2+2
16=7+4+4+1
16=7+4+3+2
16=7+3+3+3
16=6+6+3+1
16=6+6+2+2
16=6+5+4+1
16=6+5+3+2
16=6+4+4+2
16=6+4+3+3
16=5+5+5+1
16=5+5+4+2
16=5+5+3+3
16=5+4+4+3
16=4+4+4+4
17=10+5+1+1
17=10+4+2+1
17=10+3+3+1
17=10+3+2+2
17=9+6+1+1
17=9+5+2+1
17=9+4+3+1
17=9+4+2+2
17=9+3+3+2
17=8+7+1+1
17=8+6+2+1
17=8+5+3+1
17=8+5+2+2
17=8+4+4+1
17=8+4+3+2
17=8+3+3+3
17=7+7+2+1
17=7+6+3+1
17=7+6+2+2
17=7+5+4+1
17=7+5+3+2
17=7+4+4+2
17=7+4+3+3
17=6+6+4+1
17=6+6+3+2
17=6+5+5+1
17=6+5+4+2
17=6+5+3+3
17=6+4+4+3
17=5+5+5+2
17=5+5+4+3
17=5+4+4+4
18=10+6+1+1
18=10+5+2+1
18=10+4+3+1
18=10+4+2+2
18=10+3+3+2
18=9+7+1+1
18=9+6+2+1
18=9+5+3+1
18=9+5+2+2
18=9+4+4+1
18=9+4+3+2
18=9+3+3+3
18=8+8+1+1
18=8+7+2+1
18=8+6+3+1
18=8+6+2+2
18=8+5+4+1
18=8+5+3+2
18=8+4+4+2
18=8+4+3+3
18=7+7+3+1
18=7+7+2+2
18=7+6+4+1
18=7+6+3+2
18=7+5+5+1
18=7+5+4+2
18=7+5+3+3
18=7+4+4+3
18=6+6+5+1
18=6+6+4+2
18=6+6+3+3
18=6+5+5+2
18=6+5+4+3
18=6+4+4+4
18=5+5+5+3
18=5+5+4+4
19=10+7+1+1
19=10+6+2+1
19=10+5+3+1
19=10+5+2+2
19=10+4+4+1
19=10+4+3+2
19=10+3+3+3
19=9+8+1+1
19=9+7+2+1
19=9+6+3+1
19=9+6+2+2
19=9+5+4+1
19=9+5+3+2
19=9+4+4+2
19=9+4+3+3
19=8+8+2+1
19=8+7+3+1
19=8+7+2+2
19=8+6+4+1
19=8+6+3+2
19=8+5+5+1
19=8+5+4+2
19=8+5+3+3
19=8+4+4+3
19=7+7+4+1
19=7+7+3+2
19=7+6+5+1
19=7+6+4+2
19=7+6+3+3
19=7+5+5+2
19=7+5+4+3
19=7+4+4+4
19=6+6+6+1
19=6+6+5+2
19=6+6+4+3
19=6+5+5+3
19=6+5+4+4
19=5+5+5+4
20=10+8+1+1
20=10+7+2+1
20=10+6+3+1
20=10+6+2+2
20=10+5+4+1
20=10+5+3+2
20=10+4+4+2
20=10+4+3+3
20=9+9+1+1
20=9+8+2+1
20=9+7+3+1
20=9+7+2+2
20=9+6+4+1
20=9+6+3+2
20=9+5+5+1
20=9+5+4+2
20=9+5+3+3
20=9+4+4+3
20=8+8+3+1
20=8+8+2+2
20=8+7+4+1
20=8+7+3+2
20=8+6+5+1
20=8+6+4+2
20=8+6+3+3
20=8+5+5+2
20=8+5+4+3
20=8+4+4+4
20=7+7+5+1
20=7+7+4+2
20=7+7+3+3
20=7+6+6+1
20=7+6+5+2
20=7+6+4+3
20=7+5+5+3
20=7+5+4+4
20=6+6+6+2
20=6+6+5+3
20=6+6+4+4
20=6+5+5+4
20=5+5+5+5
21=10+9+1+1
21=10+8+2+1
21=10+7+3+1
21=10+7+2+2
21=10+6+4+1
21=10+6+3+2
21=10+5+5+1
21=10+5+4+2
21=10+5+3+3
21=10+4+4+3
21=9+9+2+1
21=9+8+3+1
21=9+8+2+2
21=9+7+4+1
21=9+7+3+2
21=9+6+5+1
21=9+6+4+2
21=9+6+3+3
21=9+5+5+2
21=9+5+4+3
21=9+4+4+4
21=8+8+4+1
21=8+8+3+2
21=8+7+5+1
21=8+7+4+2
21=8+7+3+3
21=8+6+6+1
21=8+6+5+2
21=8+6+4+3
21=8+5+5+3
21=8+5+4+4
21=7+7+6+1
21=7+7+5+2
21=7+7+4+3
21=7+6+6+2
21=7+6+5+3
21=7+6+4+4
21=7+5+5+4
21=6+6+6+3
21=6+6+5+4
21=6+5+5+5
22=10+10+1+1
22=10+9+2+1
22=10+8+3+1
22=10+8+2+2
22=10+7+4+1
22=10+7+3+2
22=10+6+5+1
22=10+6+4+2
22=10+6+3+3
22=10+5+5+2
22=10+5+4+3
22=10+4+4+4
22=9+9+3+1
22=9+9+2+2
22=9+8+4+1
22=9+8+3+2
22=9+7+5+1
22=9+7+4+2
22=9+7+3+3
22=9+6+6+1
22=9+6+5+2
22=9+6+4+3
22=9+5+5+3
22=9+5+4+4
22=8+8+5+1
22=8+8+4+2
22=8+8+3+3
22=8+7+6+1
22=8+7+5+2
22=8+7+4+3
22=8+6+6+2
22=8+6+5+3
22=8+6+4+4
22=8+5+5+4
22=7+7+7+1
22=7+7+6+2
22=7+7+5+3
22=7+7+4+4
22=7+6+6+3
22=7+6+5+4
22=7+5+5+5
22=6+6+6+4
22=6+6+5+5
23=10+10+2+1
23=10+9+3+1
23=10+9+2+2
23=10+8+4+1
23=10+8+3+2
23=10+7+5+1
23=10+7+4+2
23=10+7+3+3
23=10+6+6+1
23=10+6+5+2
23=10+6+4+3
23=10+5+5+3
23=10+5+4+4
23=9+9+4+1
23=9+9+3+2
23=9+8+5+1
23=9+8+4+2
23=9+8+3+3
23=9+7+6+1
23=9+7+5+2
23=9+7+4+3
23=9+6+6+2
23=9+6+5+3
23=9+6+4+4
23=9+5+5+4
23=8+8+6+1
23=8+8+5+2
23=8+8+4+3
23=8+7+7+1
23=8+7+6+2
23=8+7+5+3
23=8+7+4+4
23=8+6+6+3
23=8+6+5+4
23=8+5+5+5
23=7+7+7+2
23=7+7+6+3
23=7+7+5+4
23=7+6+6+4
23=7+6+5+5
23=6+6+6+5
24=10+10+3+1
24=10+10+2+2
24=10+9+4+1
24=10+9+3+2
24=10+8+5+1
24=10+8+4+2
24=10+8+3+3
24=10+7+6+1
24=10+7+5+2
24=10+7+4+3
24=10+6+6+2
24=10+6+5+3
24=10+6+4+4
24=10+5+5+4
24=9+9+5+1
24=9+9+4+2
24=9+9+3+3
24=9+8+6+1
24=9+8+5+2
24=9+8+4+3
24=9+7+7+1
24=9+7+6+2
24=9+7+5+3
24=9+7+4+4
24=9+6+6+3
24=9+6+5+4
24=9+5+5+5
24=8+8+7+1
24=8+8+6+2
24=8+8+5+3
24=8+8+4+4
24=8+7+7+2
24=8+7+6+3
24=8+7+5+4
24=8+6+6+4
24=8+6+5+5
24=7+7+7+3
24=7+7+6+4
24=7+7+5+5
24=7+6+6+5
24=6+6+6+6
25=10+10+4+1
25=10+10+3+2
25=10+9+5+1
25=10+9+4+2
25=10+9+3+3
25=10+8+6+1
25=10+8+5+2
25=10+8+4+3
25=10+7+7+1
25=10+7+6+2
25=10+7+5+3
25=10+7+4+4
25=10+6+6+3
25=10+6+5+4
25=10+5+5+5
25=9+9+6+1
25=9+9+5+2
25=9+9+4+3
25=9+8+7+1
25=9+8+6+2
25=9+8+5+3
25=9+8+4+4
25=9+7+7+2
25=9+7+6+3
25=9+7+5+4
25=9+6+6+4
25=9+6+5+5
25=8+8+8+1
25=8+8+7+2
25=8+8+6+3
25=8+8+5+4
25=8+7+7+3
25=8+7+6+4
25=8+7+5+5
25=8+6+6+5
25=7+7+7+4
25=7+7+6+5
25=7+6+6+6
26=10+10+5+1
26=10+10+4+2
26=10+10+3+3
26=10+9+6+1
26=10+9+5+2
26=10+9+4+3
26=10+8+7+1
26=10+8+6+2
26=10+8+5+3
26=10+8+4+4
26=10+7+7+2
26=10+7+6+3
26=10+7+5+4
26=10+6+6+4
26=10+6+5+5
26=9+9+7+1
26=9+9+6+2
26=9+9+5+3
26=9+9+4+4
26=9+8+8+1
26=9+8+7+2
26=9+8+6+3
26=9+8+5+4
26=9+7+7+3
26=9+7+6+4
26=9+7+5+5
26=9+6+6+5
26=8+8+8+2
26=8+8+7+3
26=8+8+6+4
26=8+8+5+5
26=8+7+7+4
26=8+7+6+5
26=8+6+6+6
26=7+7+7+5
26=7+7+6+6
27=10+10+6+1
27=10+10+5+2
27=10+10+4+3
27=10+9+7+1
27=10+9+6+2
27=10+9+5+3
27=10+9+4+4
27=10+8+8+1
27=10+8+7+2
27=10+8+6+3
27=10+8+5+4
27=10+7+7+3
27=10+7+6+4
27=10+7+5+5
27=10+6+6+5
27=9+9+8+1
27=9+9+7+2
27=9+9+6+3
27=9+9+5+4
27=9+8+8+2
27=9+8+7+3
27=9+8+6+4
27=9+8+5+5
27=9+7+7+4
27=9+7+6+5
27=9+6+6+6
27=8+8+8+3
27=8+8+7+4
27=8+8+6+5
27=8+7+7+5
27=8+7+6+6
27=7+7+7+6
28=10+10+7+1
28=10+10+6+2
28=10+10+5+3
28=10+10+4+4
28=10+9+8+1
28=10+9+7+2
28=10+9+6+3
28=10+9+5+4
28=10+8+8+2
28=10+8+7+3
28=10+8+6+4
28=10+8+5+5
28=10+7+7+4
28=10+7+6+5
28=10+6+6+6
28=9+9+9+1
28=9+9+8+2
28=9+9+7+3
28=9+9+6+4
28=9+9+5+5
28=9+8+8+3
28=9+8+7+4
28=9+8+6+5
28=9+7+7+5
28=9+7+6+6
28=8+8+8+4
28=8+8+7+5
28=8+8+6+6
28=8+7+7+6
28=7+7+7+7
29=10+10+8+1
29=10+10+7+2
29=10+10+6+3
29=10+10+5+4
29=10+9+9+1
29=10+9+8+2
29=10+9+7+3
29=10+9+6+4
29=10+9+5+5
29=10+8+8+3
29=10+8+7+4
29=10+8+6+5
29=10+7+7+5
29=10+7+6+6
29=9+9+9+2
29=9+9+8+3
29=9+9+7+4
29=9+9+6+5
29=9+8+8+4
29=9+8+7+5
29=9+8+6+6
29=9+7+7+6
29=8+8+8+5
29=8+8+7+6
29=8+7+7+7
30=10+10+9+1
30=10+10+8+2
30=10+10+7+3
30=10+10+6+4
30=10+10+5+5
30=10+9+9+2
30=10+9+8+3
30=10+9+7+4
30=10+9+6+5
30=10+8+8+4
30=10+8+7+5
30=10+8+6+6
30=10+7+7+6
30=9+9+9+3
30=9+9+8+4
30=9+9+7+5
30=9+9+6+6
30=9+8+8+5
30=9+8+7+6
30=9+7+7+7
30=8+8+8+6
30=8+8+7+7
31=10+10+10+1
31=10+10+9+2
31=10+10+8+3
31=10+10+7+4
31=10+10+6+5
31=10+9+9+3
31=10+9+8+4
31=10+9+7+5
31=10+9+6+6
31=10+8+8+5
31=10+8+7+6
31=10+7+7+7
31=9+9+9+4
31=9+9+8+5
31=9+9+7+6
31=9+8+8+6
31=9+8+7+7
31=8+8+8+7
32=10+10+10+2
32=10+10+9+3
32=10+10+8+4
32=10+10+7+5
32=10+10+6+6
32=10+9+9+4
32=10+9+8+5
32=10+9+7+6
32=10+8+8+6
32=10+8+7+7
32=9+9+9+5
32=9+9+8+6
32=9+9+7+7
32=9+8+8+7
32=8+8+8+8
33=10+10+10+3
33=10+10+9+4
33=10+10+8+5
33=10+10+7+6
33=10+9+9+5
33=10+9+8+6
33=10+9+7+7
33=10+8+8+7
33=9+9+9+6
33=9+9+8+7
33=9+8+8+8
34=10+10+10+4
34=10+10+9+5
34=10+10+8+6
34=10+10+7+7
34=10+9+9+6
34=10+9+8+7
34=10+8+8+8
34=9+9+9+7
34=9+9+8+8
35=10+10+10+5
35=10+10+9+6
35=10+10+8+7
35=10+9+9+7
35=10+9+8+8
35=9+9+9+8
36=10+10+10+6
36=10+10+9+7
36=10+10+8+8
36=10+9+9+8
36=9+9+9+9
37=10+10+10+7
37=10+10+9+8
37=10+9+9+9
38=10+10+10+8
38=10+10+9+9
39=10+10+10+9
40=10+10+10+10

leetCode排列系列算法(回溯法)


function permuteUnique(list,len) {

        let res = [];

        function travel(index, arr) {
            if (arr.length == len) {
                res.push([...arr]);
                return;
            }

            for (let i = index; i < list.length; i++) {
                arr.push(list[i]);
                travel(i, arr);
                arr.pop();
            }
        }

        travel(0, []);

        return res;

    }
       传入一个数组。和需要生成的数量
      let arr =[1,2,3,4,5,6,7,8,9];
      let num=4;
     permuteUnique(arr,num);
2赞

可行~谢谢大佬。。。