Beispiel #1
0
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");
	}
}
Beispiel #2
0
	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;
    }