leetcode 動態規劃練習

2021-08-03 05:48:42 字數 1139 閱讀 4935

279. perfect squares

給定正整數n,找到最少可分解為幾個數的平方和為n。

例如 n = 12 return 3 因為12 = 4+4+4 。給定n = 13 返回 2 因為13 = 4+ 9

class solution 

else}}

int ans = a[n];

delete a;

return ans;

}};

53. maximum subarray

給定連續陣列,求其子陣列中和最大的陣列,返回最大和

class solution     

} return max_t;

}};

55. jump game

維護乙個index變數,表示當前可訪問的最遠位置索引。

class solution 

return false;

}};

72. edit distance

開乙個二維陣列d[i][j]來記錄a0-ai-1與b0-bj-1之間的編輯距離,要遞推時,需要考慮對其中乙個字串的刪除操作、插入操作和替換操作分別花費的開銷,從中找出乙個最小的開銷即為所求

dp[i][j]表示a的前i個和b的前j個相同後的最短距離

dp[i][j]來自於三種狀態

for(int j=1; j<=l2; ++j)

for(int i=1; i<=l1; ++i)

}return dp[l1][l2];}};

5. longest palindromic substring

最長回文子串,dp[i][j] = 1表示從i到j是回文。從小到大列舉子串長度,當s[i] = s[j]且dp[i+1][j-1]值為1的時候,dp[i][j]=1;

class solution 

} for (int i = n- 1; i >= 0; i--)}}

} return s.substr(start, end - start + 1);

}};

動態規劃練習

題目描述 給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 插入乙個字元 刪除乙個字元 替換乙個字元 include include include using namespace std int find min int x,int y,i...

動態規劃練習

題目描述 蘋果裝配問題,把乙個區域分成n m個小區域,其中每個區域有一定數量的蘋果,設左上角為0,0,右下角為n 1,m 1.從0,0開始出發,每經過乙個區域,就把該區域的蘋果全部收走,求一條路徑使得收穫的蘋果最多。include include using namespace std class ...

動態規劃練習

1 問題描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。例 台階n 0 輸出 0 台階n 2 輸出 2 台階n 3 輸出 3 台階n 4 輸出 5 台階n 7 輸出 21 int step int a return b a int main cout ...