Hello all. I'm supposed to store a set of permutations (type list<int>) inside a set of list<int>'s. I can't figure out how to use recursion inside my permutate method. Can anyone help? I'm completely lost and this is due Monday.
Code:
#include <iostream>
#include <algorithm>
#include <list>
#include <string>
#include <cctype>
#include<set>
using namespace std;
class perm{
public:
void permutate();
void setList(int size);
void display();
private:
int max;
list<int> numbers;
set<list<int> > permutations;
};
void perm::setList(int size)
{
for (int i = 1; i <= size; i++)
{
numbers.push_back(i);
}
}
void perm :: permutate(list<int> numbers)
{
if (numbers.size() == 1)
{
permutations.insert(numbers);
}
else{
list<int>::iterator it;
for (it = numbers.begin(); it != numbers.end(); it++)
{
int c;
c = numbers.front();
numbers.pop_front();
numbers.front() = c;
set<list<int> > subPerms;
subPerms = permutate(
/*
for (it2 = subPerms.begin(); it2 != subPerms.end(); it2++)
{
subPerms.insert(it2,numbers);
numbers.pop_front();;
}
*/
}
}
}
void perm :: display()
{
set<list<int> >::iterator it;
for (it = permutations.begin(); it != permutations.end(); it++)
{
list<int>::iterator j;
cout << "( ";
list<int> temp = *it;
for (j = temp.begin(); j != temp.end(); j++) {
cout << *j << " ";
}
cout << ")";
cout << endl;
}
}
int main()
{
perm test;
test.setList(2);
test.permutate();
test.display();
system("pause");
return 0;
}