现有一个长度为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++算法
用递归
#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;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
这个没啥逻辑,很直接,就是先1个的,然后用1个的组装2个的,用2个的组装3个的,以此类推;
我这边有一个以前自己用过的工具类,希望对你有帮助
https://blog.csdn.net/qq_34031691/article/details/122064737?spm=1001.2014.3001.5502