77. Combinations
来源:互联网 发布:单片机开发待遇 编辑:程序博客网 时间:2024/05/17 22:40
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],
回溯法,并且规定顺序。
boolean[] onstack;List<List<Integer>> retlist;public List<List<Integer>> combine(int n, int k){onstack=new boolean[n];ArrayList<Integer> arraylist=new ArrayList<>(100);long factor_n=1;long factor_k=1;for(int i=n,j=0;j<k;i--,j++)factor_n*=i;for(int i=2;i<=k;i++)factor_k*=i;long capacity=factor_n/factor_k;retlist=new ArrayList<>((int)capacity);dfs(n, k, 0, arraylist);return retlist;}public void dfs(int n,int k,int cur,ArrayList<Integer> arraylist){if(cur==k){retlist.add(new ArrayList<>(arraylist));return ;}for(int i=1;i<=n;i++){if((arraylist.isEmpty())||(!arraylist.isEmpty()&&i>arraylist.get(arraylist.size()-1)))if(!onstack[i-1]){onstack[i-1]=true;arraylist.add(i);dfs(n, k, cur+1, arraylist);arraylist.remove(arraylist.size()-1);onstack[i-1]=false;}}}
0 0
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- 77. Combinations
- windows下cygwin+ctags+cscope
- 天堂还是地狱
- XML
- C++第六次实验
- bootloader与linux中位置无关代码的分析理解
- 77. Combinations
- 匈牙利算法 & [CodeVS 1222] 信与信封问题
- 基于用户的协同过滤推荐算法原理和实现
- 《App后台开发运维和架构实践》资源汇总
- Android APK反编译就这么简单 详解(附图)
- 第七次c++上机实验
- c++作业7
- android_app开发UI界面开发
- Android加载动画系列——BalloonLoading