leetcode 46:Permutations

1137 단어
제목:
Given a collection of numbers, return all possible permutations.
For example, [1,2,3]  have the following permutations: [1,2,3][1,3,2][2,1,3][2,3,1][3,1,2] , and  [3,2,1] . 생각:
역귀의 거슬러 올라가는 방법으로 해답을 구할 수 있다.
고정된 숫자가 서로 다른 조합을 하기 때문에 우리는 하나의 for순환 안에서 귀속을 한다. 즉, 모든 귀속 안에 for순환이 있지만 귀속이 깊을수록 for순환 횟수가 적다.
그리고 귀속하기 전에 선진적인 교환을 하여 서로 다른 조합을 형성한다.
순환 횟수가 1일 때, 교환된nums를 결과에 기록합니다.
매번 귀속 호출 후, 수조를 교환하여 거슬러 올라가야 한다.
다음을 수행합니다.
class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
		int size=nums.size();
		vector<vector<int>> result;
		back(0,size,result,nums);
		return result;
    }

	void back(int index,int size,vector<vector<int>> &result,vector<int>& nums)
	{
		if(index>=size)
		{
			result.push_back(nums);
			return;
		}
		for(int i=index;i<size;i++)
		{
			swap(nums[i],nums[index]);
			back(index+1,size,result,nums);
			swap(nums[i],nums[index]);
		}

	}
};

좋은 웹페이지 즐겨찾기