目標和——遞迴的實踐
一、題目
給定一個非負整數陣列,a1, a2, ..., an, 和一個目標數,S。現在你有兩個符號 + 和 -。對於陣列中的任意一個整數,你都可以從 + 或 -中選擇一個符號新增在前面。
返回可以使最終陣列和為目標數 S 的所有新增符號的方法數。
二、思路
我們可以使用遞迴,列舉出所有可能的情況。具體地,當我們處理到第 i 個數時,我們可以將它新增 + 或 -,遞迴地搜尋這兩種情況。當我們處理完所有的 N 個數時,我們計算出所有數的和,並判斷是否等於 S。
class Solution {
public:
int count = 0;
int findTargetSumWays(vector<int> nums, int S) {
calculate(nums, 0, 0, S);
return count;
}
void calculate(vector<int> nums, int i, int sum, int S) {
if (i == nums.size()) {
if (sum == S)
count++;
}
else {
calculate(nums, i + 1, sum + nums[i], S);
calculate(nums, i + 1, sum - nums[i], S);
}
}
};
參考:
https://leetcode-cn.com/problems/target-sum/solution/mu-biao-he-by-leetcode/
相關文章
- 遞迴和尾遞迴遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 遊標和遞迴sql 的一些程式碼遞迴SQL
- 什麼是遞迴?遞迴和迴圈的異同遞迴
- 二分法的簡單實現——-遞迴和非遞迴遞迴
- 遞迴演算法實踐---實現排列組合遞迴演算法
- 推進 OKR 目標管理落地的最佳實踐OKR
- 遞迴和遞推總結遞迴
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- Python自學之路:遞迴、棧和佇列遍歷目錄Python遞迴佇列
- python-動態規劃的遞迴、非遞迴實現Python動態規劃遞迴
- JavaScript和ABAP的尾遞迴JavaScript遞迴
- Oracle和Mysql遞迴OracleMySql遞迴
- 軟體工程的實踐專案課程的自我目標軟體工程
- 棧實現遞迴遞迴
- lambda實現遞迴遞迴
- 單目標定:從理論到OpenCV實踐OpenCV
- ?30 秒瞭解尾遞迴和尾遞迴優化遞迴優化
- 尾呼叫和尾遞迴遞迴
- 漢諾塔和遞迴遞迴
- 對遞迴和迭代的效率的思考和分析遞迴
- 實現反轉連結串列--遞迴、迭代、雙指標、棧遞迴指標
- 快排的優化(非遞迴 (感覺沒變化遞迴和非遞迴)+ 三個隨機數選取準標準值(和相對的最後的位置交換) + 分割區間法)優化遞迴隨機
- 遞迴實現原則遞迴
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- 遞迴的應用場景和呼叫機制、遞迴需要遵守的重要規則遞迴
- 遞迴的列印和階乘運用遞迴
- 我對遞迴的理解和總結遞迴
- 二叉樹的前中後序遍歷(遞迴和非遞迴版本)二叉樹遞迴
- 快速排序【遞迴】【非遞迴】排序遞迴
- 歸併排序的非遞迴實現排序遞迴
- 資料結構-樹以及深度、廣度優先遍歷(遞迴和非遞迴,python實現)資料結構遞迴Python
- 二分查詢的兩種實現形式遞迴和迭代遞迴
- 人物模型和目標模型
- iOS 中的事件傳遞和響應機制 - 實踐篇iOS事件
- iOS 中的事件傳遞和響應機制 – 實踐篇iOS事件
- 目標檢測入門系列手冊七:目標檢測的產品應用實踐【工業視覺篇】視覺