欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 数据结构与算法:三维动态规划

数据结构与算法:三维动态规划

2025/8/13 12:28:15 来源:https://blog.csdn.net/2402_89326161/article/details/146888825  浏览:    关键词:数据结构与算法:三维动态规划

前言

到了三维整个难度就陡然上去了……

一、一和零

class Solution {
public:int zeros,ones;void count(string s){zeros=ones=0;for(int i=0;i<s.length();i++){if(s[i]=='0'){zeros++;}else{ones++;}}}int findMaxForm(vector<string>& strs, int m, int n) {//return recursion(0,m,n,strs);//vector<vector<vector<int>>>dp//(strs.size(),vector<vector<int>>(m+1,vector<int>(n+1,-1)));//return memorized_search(0,m,n,strs,dp);//return DP(m,n,strs);return optimized_dp(m,n,strs);}//递归 -> 超时int recursion(int i,int z,int o,vector<string>&strs){if(i==strs.size()){return 0;}int p1=recursion(i+1,z,o,strs);//不要当前字符串int p2=0;//要count(strs[i]);if(zeros<=z&&ones<=o){p2=1+recursion(i+1,z-zeros,o-ones,strs);}return max(p1,p2);}//记忆化搜索int memorized_search(int i,int z,int o,vector<string>&strs,vector<vector<vector<int>>>&dp){if(i==strs.size()){return 0;}if(dp[i][z][o]!=-1){return dp[i][z][o];}int p1=memorized_search(i+1,z,o,strs,dp);int p2=0;count(strs[i]);if(zeros<=z&&ones<=o){p2=1+memorized_search(i+1,z-zeros,o-ones,strs,dp);}dp[i][z][o]=max(p1,p2);return dp[i][z][o];}//动态规划int DP(int m,int n,vector<string>&strs){vector<vector<vector<int>>>dp(strs.size()+1,vector<vector<int>>(m+1,vector<int>(n+1)));for(int i=strs.size()-1;i>=0;i--){for(int j=0;j<=m;j++){for(int k=0;k<=n;k++){int p1=dp[i+1][j][k];int p2=0;count(strs[i]);if(zeros<=j&&ones<=k){p2=1+dp[i+1][j-zeros][k-ones];}dp[i][j][k]=max(p1,p2);}}}return dp[0][m][n];}//空间压缩int optimized_dp(int m,int n,vector<string>&strs){vector<vector<int>>dp(m+1,vector<int>(n+1));

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词