五个数字所有不重复的组合方式逻辑思维及c++算法

现有一个长度为5的数组arrar=[1,2,3,4,5],求一下这个数组中,所有元素的组合:
长度=1:1 2 3 4 5
长度=2:12 13 14 15 23 24 25 34 35 45
长度=3:123 124 125 234 235 345
长度=4:1234 1235 1245 2345
长度=5:12345
麻烦详细提供一下逻辑和c++算法

用递归

img


你题目的解答代码如下:

#include<iostream>
using namespace std;

int a[] = {1,2,3,4,5};
int re[5],len=0;

void fp(int t,int n)
{
    int i;
    if (len==n)
    {
        cout << " ";
        for (i = 0; i < len; i++)
        {
            cout << re[i];
        }
        return;
    }
    for (i = t; i < 5-(n-len-1); i++)
    {
        re[len] = a[i];
        len++;
        fp(i+1,n);
        len--;
    }
}

int main()
{
    int i;
    for (i = 1; i <= 5; i++)
    {
        cout << "长度=" << i << ":";
        len = 0;
        fp(0,i);
        cout << endl;
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

这个没啥逻辑,很直接,就是先1个的,然后用1个的组装2个的,用2个的组装3个的,以此类推;
我这边有一个以前自己用过的工具类,希望对你有帮助
https://blog.csdn.net/qq_34031691/article/details/122064737?spm=1001.2014.3001.5502