您的位置:首页 > 其它

LeetCode 10.7 Combination Sum

2016-04-26 15:08 337 查看
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where
the candidate numbers sums to T. 

The same repeated number may be chosen from C unlimited number of times.

Note:

All numbers (including target) will be positive integers.
Elements in a combination (a1, a2,
… , ak) must be in non-descending order. (ie, a1 ≤ a2 ≤
… ≤ ak).
The solution set must not contain duplicate combinations.

For example, given candidate set 
2,3,6,7
 and target 
7


A solution set is: 

c43e
[7]
 
[2, 2, 3]


import java.util.Stack;
public class T3 {
public static void main(String[] args) { int[] arr= {2 ,3 ,6 ,7}; T3 t=new T3(); t.DFS(arr, 7); t.print(); } Stack<int [] > ans=new Stack<>(); int n=0; int[] f=new int[1000]; int pre=0; void DFS(int[] v,int sum){ if(sum==0){ int[] arr=new int[n];  for(int i=0;i<n;i++){ arr[i]=f[i]; } ans.push(arr); }else{ for(int i=pre;i<v.length;i++){ if(sum-v[i]>=0){ pre=i; f[n++]=v[i]; DFS(v,sum-v[i]); n--; } } } } void print(){ int num=1; while(!ans.isEmpty()){ System.out.println("======"+num+"====="); int []temp=ans.pop(); for(int i=0;i<temp.length;i++){ System.out.print(temp[i]+" "); } System.out.println(); num++; } }}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: