classSolution:defcombinationSum(self, candidates: List[int], target:int)-> List[List[int]]:
ans =[]
path =[]defdfs(i:int, left:int)->None:if left ==0:# 找到一个合法组合
ans.append(path.copy())returnif i ==len(candidates)or left <0:return# 不选
dfs(i +1, left)# 选
path.append(candidates[i])
dfs(i, left - candidates[i])
path.pop()# 恢复现场
dfs(0, target)return ans
二、22. 括号生成
代码
classSolution:defgenerateParenthesis(self, n:int)-> List[str]:
m = n *2# 括号长度
ans =[]
path =['']* m # 所有括号长度都是一样的 m# i = 目前填了多少个括号# open = 左括号个数,i-open = 右括号个数defdfs(i:int,open:int)->None:if i == m:# 括号构造完毕
ans.append(''.join(path))# 加入答案returnifopen< n:# 可以填左括号
path[i]='('# 直接覆盖
dfs(i +1,open+1)# 多了一个左括号if i -open<open:# 可以填右括号
path[i]=')'# 直接覆盖
dfs(i +1,open)
dfs(0,0)return ans
三、79. 单词搜索(中等)
代码
classSolution:defexist(self, board: List[List[str]], word:str)->bool:
m, n =len(board),len(board[0])defdfs(i:int, j:int, k:int)->bool:if board[i][j]!= word[k]:# 匹配失败returnFalseif k ==len(word)-1:# 匹配成功!returnTrue
board[i][j]=''# 标记访问过for x, y in(i, j -1),(i, j +1),(i -1, j),(i +1, j):# 相邻格子if0<= x < m and0<= y < n and dfs(x, y, k +1):returnTrue# 搜到了!
board[i][j]= word[k]# 恢复现场returnFalse# 没搜到returnany(dfs(i, j,0)for i inrange(m)for j inrange(n))
报错内容
java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.tools.javac.tree.JCTree qualid
deepseek 解决 打开 File > Project Structure > Project SDK, 选择 JDK17。我没有 JDK17就下载了一…
2.1 策略梯度方法
策略梯度方法计算策略梯度的估计值并将其插入到随机梯度上升算法中。最常用的梯度估计器的形式如下: g ^ E t [ ∇ θ log π θ ( a t ∣ s t ) A ^ t ] (1) \hat{g} \mathbb{E}_t \left[ \nabla_{\theta} \log \pi_{\theta}(a_t | s_t) \h…