對 n 個元素求全排列:固定第 1 個位置,遞迴求剩餘 n-1 個元素的全排列,合併結果。基底情況:剩餘 1 個元素直接回傳。
void permute(vector<int>& nums, int start, vector<vector<int>>& result) {
if (start == nums.size()) { result.push_back(nums); return; }
for (int i = start; i < nums.size(); ++i) {
swap(nums[start], nums[i]);
permute(nums, start + 1, result);
swap(nums[start], nums[i]); // backtrack
}
}