面经分享的一些动态规划题合集 发表于 2022-06-09 | 分类于 算法 , 动态规划 , 面经中出的动态规划面试题合集 | 牛客网面经中的一些动态规划面试题 983.最低票价123456789101112131415161718192021222324252627class Solution {public: int mincostTickets(vector<int>& days, vector<int>& costs) { //动态规划 dp[i]表示到第 i 天结束时的最低消费 //状态转移方程: //如果第 i 天需要通行证: // dp[i]=min(dp[i-1]+costs[0], dp[i-7]+costs[1], dp[i-30]+costs[2]); //如果第 i 天不需要通行证:dp[i] = dp[i-1]; int n=days.size(); int lastDay = days[n-1]; vector<int> dp(lastDay+1, 0); int index = 0; for(int i=1;i<=lastDay;i++){ if(i==days[index]){ int day1 = i-1>0 ? i-1 : 0; int day2 = i-7>0 ? i-7 : 0; int day3 = i-30>0 ? i-30 : 0; dp[i]=min(dp[day1]+costs[0], min(dp[day2]+costs[1], dp[day3]+costs[2])); index++; }else{ dp[i] = dp[i-1]; } } return dp[lastDay]; }}; 221.最大正方形1234567891011121314151617181920212223242526272829class Solution {public: int maximalSquare(vector<vector<char>>& matrix) { //动态规划 //dp[i][j]表示以(i,j)为右下角,且只包含1的正方形的边长最大值 //状态转移方程:dp[i][j]=min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])+1 //还要考虑边界条件,如果i和j至少有一个为0,则dp[i][j]=1 int m=matrix.size(); int n=matrix[0].size(); if(m==0 || n==0) return 0; int maxSide=0; vector<vector<int>> dp(m, vector<int>(n)); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(matrix[i][j]=='1'){ if(i==0 || j==0){ dp[i][j]=1; }else{ dp[i][j]=min(min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1])+1; } maxSide = max(maxSide, dp[i][j]); } } } return maxSide * maxSide; }}; 剑指 Offer II 098. 路径的数目12345678910111213141516171819202122class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> dp(m, vector<int>(n)); ///base case for(int i=0;i<m;i++){ dp[i][0]=1; } for(int i=0;i<n;i++){ dp[0][i]=1; } for(int i=1;i<m;i++){ for(int j=1;j<n;j++){ dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } return dp[m-1][n-1]; }}; 62. 不同路径12345678910111213141516171819202122class Solution {public: int uniquePaths(int m, int n) { //动态规划 dp[i][j]表示达到i,j位置总共的路径数 vector<vector<int>> dp(m, vector<int>(n)); //base case for(int i=0;i<m;i++){ dp[i][0]=1; } for(int j=0;j<n;j++){ dp[0][j]=1; } for(int i=1;i<m;i++){ for(int j=1;j<n;j++){ dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } return dp[m-1][n-1]; }}; -------------本文结束 感谢阅读------------- 本文作者: HReina 本文链接: http://hreina.com/2022/06/09/%E9%9D%A2%E7%BB%8F%E5%88%86%E4%BA%AB%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E9%A2%98%E5%90%88%E9%9B%86/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!