c_cpp 给定一组数字,返回所有可能的排列。例如,[1,2,3]具有以下排列:[1,2,3],[1,3,2],[2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 给定一组数字,返回所有可能的排列。例如,[1,2,3]具有以下排列:[1,2,3],[1,3,2],[2相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <vector>
#include <string>
using namespace std;

void dfs(vector<vector<int>> &res, vector<int> one, int idx, int n, vector<int> &nums) {
	if(idx == n) {
		res.push_back(one);
		return;
	}
	for(int i=idx; i<n; i++) {
		swap(nums[idx], nums[i]);

		one.push_back(nums[idx]);
		dfs(res, one, idx+1, n, nums);
		one.pop_back();

		swap(nums[idx], nums[i]);
	}
}

vector<vector<int>> get_premutation(vector<int> &nums) {
	vector<vector<int>> res;
	vector<int> one;
	dfs(res, one, 0, nums.size(), nums);
	return res;
}

int main()
{
    vector<int> nums = {1, 2, 3};
    vector<vector<int>> res = get_premutation(nums);
    for(auto v : res) {
	    for(int i : v) cout << i << " ";
	    cout << endl;
    }
    return 0;
}

以上是关于c_cpp 给定一组数字,返回所有可能的排列。例如,[1,2,3]具有以下排列:[1,2,3],[1,3,2],[2的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 给定可能包含重复项的数字集合,返回所有可能的唯一排列。例如,[1,1,2]有以下内容

c_cpp 给定一组正负整数,重新排列它,使得一端为正整数,另一端为负整数。

permutations

给定一组数字,返回所有其他数字的产品数组(无分区)

c_cpp 给定一组单词,返回给定集合中的anagrams集合

回溯 - 给定一组数字,找到总和等于 M 的所有子集(给定 M)