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].

题解: 全排列,DFS。

在STL里面有一个next_permutation函数,如果数据量小的时候,这个函数还比较好用。不过当数据大后,next_permutation函数效率就不行了。

本题套用DFS模版即可。

类似的题目: Permutation II http://www.cnblogs.com/double-win/p/3793293.html , 全排列的升级版,可能出现重复数字。

class Solution {
public:
vector<vector<int> > ans;
vector<int> print;
vector<int> mark;
int length;
void DFS(int len,vector<int> &num){
if(len==length)
{
ans.push_back(print);
return;
}
for(int i=;i<length;i++)
{
if(mark[i]==)
{
print[len]= num[i];
mark[i]=;
DFS(len+,num);
mark[i]=;
}
}
}
vector<vector<int> > permute(vector<int> &num) {
length=num.size();
ans.clear();
if(length<=) return ans;
print.clear();
print.resize(length);
mark.clear();
mark.resize(length);
DFS(,num);
return ans;
}
};

转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!

最新文章

  1. Android中的自定义控件(二)
  2. Add Two Numbers (c#)
  3. 从两个平方算法到分治算法-java
  4. Android You need to use a Theme.AppCompat theme (or descendant) with this activity.
  5. SpringMVC——form标签的使用
  6. 《深入理解Nginx》阅读与实践(三):使用upstream和subrequest访问第三方服务
  7. mysql服务器io等待高定位与分析
  8. linux下notify机制(仅用于内核模块之间的通信)
  9. iOS FMDB官方使用文档 G-C-D的使用 提高性能(翻译)(转)
  10. JavaScript中数组操作
  11. mssql 获取表结构信息
  12. poj 2513Colored Sticks
  13. Canvas API -- JavaScript 标准参考教程(alpha)
  14. Xcode使用小结1
  15. FineReport父子格实现动态参数注入
  16. Windows自定义运行命令
  17. (4)top详解 (每周一个linux命令系列)
  18. 2019.03.24 Ajax
  19. 使用telnet模拟邮件的收发
  20. MySql多个count查询

热门文章

  1. 高效率terminal和sublime 相互启动
  2. CBV 验证装饰器的使用
  3. poi操作word 2007 常用方法总结
  4. ubuntu 初始设置备忘
  5. java 蓝桥杯算法提高 _1区间k大数查询
  6. linux: cat more less tail head查看文件内容
  7. 《Android Studio实用指南》4.27 使用演示模式
  8. [C++] NEW Advanced Usage
  9. code1052 地鼠游戏
  10. 让你大开眼界的10款Android界面设计