72 DFS解决目标和问题

问题描述:给你一个整数数组和一个整数target。

向数组中每个整数前添加'+'或'-',然后串联起所有整数,返回通过该种方法串联其所有的整数并且计算结果等于target的不同表达式的个数。

dfs求解:每次选择可以有选或不选两种,最多进行nums.length长度次遍历,并在最后一次过程中判断结果是否为0.

int count=0;
public void dfs(int []nums,int index,int target)
{
if(index==nums.length)
{
if(target==0){count++;return;}
return;
}
dfs(nums,index+1,target-nums[index]);
dfs(nums,index+1,target+nums[index]);
}
public int DFS(int []nums,int target)
{
dfs(nums,0,target);
​​​​​​​return count;
}

你可能感兴趣的:(JAVA刷题500道,深度优先,算法,数据结构)