#include <stack>
#include<iostream>
#include<vector>
using namespace std;
void cho(vector<char>&r, vector<char>&a, int n1, int n2, int m, vector<vector<char>>&b)
{
if ((n2 - n1 + 1) < m)
return;
if (n2 - n1 + 1 == m)
{
for (int i = n1; i <= n2; i++)
r.push_back(a[i]);
b.push_back(r);
for (int i = n1; i <= n2; i++)
r.pop_back();
return;
}
if (m == 1)
{
for (int i = n1; i <=n2; i++)
{
r.push_back(a[i]);
b.push_back(r);
r.pop_back();
}
return;
}
r.push_back(a[n1]);
cho(r, a, n1 + 1, n2, m - 1, b);
r.pop_back();
cho(r, a, n1 + 1, n2, m, b);
}
int main( )
{
vector<char>a;
a.push_back('a');
a.push_back('b');
a.push_back('c');
a.push_back('d');
vector<vector<char>>b;
vector<char>r;
cho(r,a, 0,3, 3,b);
for (vector<vector<char>>::iterator it = b.begin(); it != b.end(); it++)
{
for (vector<char>::iterator itt = (*it).begin(); itt != (*it).end(); itt++)
{
cout << *itt << " ";
}
cout << endl;
}
system("pause");
return 0;
}
实现组合算法
最新推荐文章于 2022-07-13 13:30:14 发布