예제 #1
0
파일: test.cpp 프로젝트: Vvitas/algorithm
	void PermutionData(vector<int>& data, int k, int m, vector<vector<int>>& result)
	{
		if (k == m)
		{
			result.push_back(data); return;
		}

		for (int i = k ; i <= m; i++)
		{
			if (isSwap(data, k, i))
			{
				swap(data[i], data[k]);
				PermutionData(data, k + 1, m, result);
				swap(data[i], data[k]);
			}
		}
	}
예제 #2
0
    void getPermutation(vector<int> &_nums, int _begin, vector< vector<int> > &_permutations)
    {
        const int numsSize = _nums.size();
        if (_begin == numsSize - 1)
        {
            _permutations.push_back(_nums);
            return;
        }

        for (int curInd = _begin; curInd < numsSize; curInd++)
        {
            if (!isSwap(_nums, _begin, curInd))
            {
                continue;
            }
            swap(_nums[_begin], _nums[curInd]);
            getPermutation(_nums, _begin + 1, _permutations);
            swap(_nums[_begin], _nums[curInd]);
        }
    }