#include <functional> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型vector<vector<>> */ vector<vector<int> >ve; vector<int>pa; int s[10] = {0}; void dfs(vector<int>& nums, int u) { int l = nums.size(); if (u == l) { ve.push_back(pa); return; } for (int i = 0; i < l; ++i) { if (s[i] == 0) { pa.push_back(nums[i]); s[i] = 1; dfs(nums, u + 1); pa.pop_back(); s[i] = 0; } } } vector<vector<int> > cow_permute(vector<int>& nums) { // write code here sort(nums.begin(), nums.end(), greater<>()); dfs(nums, 0); return ve; } };
一、题目考察的知识点
回溯
二、题目解答方法的文字分析
和上一个题目一样,把所有可能得结果都遍历一遍,记得要标记一下,防止重复访问
三、本题解析所用的编程语言
c++
方法二
#include <algorithm> #include <functional> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型vector<vector<>> */ vector<vector<int> > cow_permute(vector<int>& nums) { // write code here sort(nums.begin(), nums.end(), greater<>()); vector<vector<int> >ve; do { ve.push_back(nums); } while (prev_permutation(nums.begin(), nums.end())); return ve; } };