permutations_shopdeck

Run Settings
LanguageC++
Language Version
Run Command
#include<iostream> #include<vector> #include<unordered_set> using namespace std; void print(vector<int> &A) { for(int i=0; i<A.size(); i++) { cout << A[i] << " "; } cout << endl; } string makeString(vector<int> &A) { string temp = ""; for(int i=0; i<A.size(); i++) { temp += to_string(A[i]); // check this syntax } return temp; } void generatePermutations(vector<int> &A) { unordered_set <string> set; int n = A.size(); for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { // make a string and check if it is already in the set if(i!=j) { swap(A[i], A[j]); string temp = makeString(A); if(set.find(temp) != set.end()) { swap(A[i], A[j]); continue; } set.insert(temp); print(A); swap(A[i], A[j]); } else { string temp = makeString(A); // 123 if(set.find(temp) != set.end()) continue; set.insert(temp); print(A); } } } return; } void generatePermutations2(vector<int> &A, int idx, unordered_set<string> &set, string temp) { if(idx == A.size()) { print(A); set.insert(temp); return; } for(int i=0; i<A.size(); i++) { swap(A[i], A[idx]); string temp = makeString(A); if(set.find(temp) == set.end()) { generatePermutations2(A, idx+1, set, temp); } swap(A[i], A[idx]); } } int main() { vector<int> A = {1, 2, 3}; unordered_set <string> set; generatePermutations2(A, 0, set, ""); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines