void Seeker::seekPermutations() { unsigned long long int N = 0; double duration, start = clock(); unsigned long long int TOTAL = countTotal(_v, _kp, _km); bool isFound = false; while (_sequence[0] != 2) { N++; duration = (clock() - start) / (double)CLOCKS_PER_SEC; if (duration > SHOW_TIME) { cout << "Done: " << (N*100.)/TOTAL <<"%" << endl; start = clock(); writeTEMP(); printSeq(_sequence, _v, "tmp"); } if (isTP(_sequence, _v)) { writeSeq2File(); printSeq(_sequence, _v, "FIND! "); isFound = true; break; } else { nextPermute(_sequence, _v); } } if (!isFound) { writeSeq2File("THERE ARE NO"); } }
static vector< vector<int> > permute(vector<int>& nums) { vector< vector<int> > res; if (nums.size() == 0) { return res; } sort(nums.begin(), nums.end()); vector<int> start = nums; do { res.push_back(nums); nextPermute(nums); } while (start != nums); return res; }