Combination Sum
来源:互联网 发布:windows系统资源监控 编辑:程序博客网 时间:2024/04/30 22:00
public class Solution { public ArrayList<Integer> l; public ArrayList<ArrayList<Integer>> l1; public ArrayList<ArrayList<Integer>> combinationSum(int[] candidates, int target) { // Start typing your Java solution below // DO NOT write main() function l = new ArrayList<Integer>(); l1 = new ArrayList<ArrayList<Integer>>(); Arrays.sort(candidates); search(candidates,target,0,l); return l1; } private void search(int[] num,int target,int lev,ArrayList<Integer> l){ //System.out.println("target: "+target+" lev:"+lev); if(target == 0)l1.add(new ArrayList<Integer>(l)); if(target < num[lev])return; if(lev==num.length-1){ if(target%num[lev]==0){ for(int i = 0;i<target/num[lev];i++) l.add(num[lev]); l1.add(new ArrayList<Integer>(l)); for(int i = 0;i < target/num[lev];i++){ l.remove(l.size()-1); } } } else{ int count = target/num[lev]; for(int i = 0;i <= count;i++){ search(num,target-i*num[lev],lev+1,l); l.add(num[lev]); } for(int i = 0;i <= count;i++){ l.remove(l.size()-1); } } } public static void main(String[] args){ int[] a = new int[4]; a[0]=2;a[1]=3;a[2]=6;a[3]=7; Solution s = new Solution(); System.out.println(s.combinationSum(a,7)); }}
自己写这个太丑了,还是找个标准的看
public class Solution { public ArrayList<Integer> cur; public ArrayList<ArrayList<Integer>> ret; public ArrayList<ArrayList<Integer>> combinationSum(int[] candidates, int target) { // Start typing your Java solution below // DO NOT write main() function ret = new ArrayList<ArrayList<Integer>>(); cur = new ArrayList<Integer>(); Arrays.sort(candidates); find(candidates,0,cur,target); return ret; } private void find(int[] candidates,int index,ArrayList<Integer> cur,int target){ if(target == 0) ret.add(new ArrayList<Integer>(cur)); else{ for(int i = index;i < candidates.length;i++){ if(target >= candidates[i]){ cur.add(candidates[i]); find(candidates,i,cur,target-candidates[i]); cur.remove(cur.size()-1); } } } }}
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- Combination Sum
- 结构体函数在Java中的运用
- SystemTime_Difference
- 给BT5设置ssh服务
- ZOJ 1733 Common Subsequence(LCS)
- override函数的返回值也必须一致
- Combination Sum
- 2012-02-07 16:26 mfc工程中添加com事件接口
- 三个方法让你成为更好的程序员
- 数据库开发总结
- 读书笔记之effective c++(一)
- 后可视化编程时代
- MotionEvent中getX()和getRawX()的区别
- Ubuntu下Hello World驱动实现全过程
- 封装后的数据库操作经典类