您的位置:首页 > 科技 > 能源 > 设计图案_怎么在网上开店_百度地图的精准定位功能_郑州网络推广培训

设计图案_怎么在网上开店_百度地图的精准定位功能_郑州网络推广培训

2025/4/18 17:41:31 来源:https://blog.csdn.net/qq_45964225/article/details/146025846  浏览:    关键词:设计图案_怎么在网上开店_百度地图的精准定位功能_郑州网络推广培训
设计图案_怎么在网上开店_百度地图的精准定位功能_郑州网络推广培训

思路

  1. dp数组定义:0_i-1的字符串中有0_j-1的字符串有dp[i][j]个
  2. 递推公式:
    if(s[i-1] == t[j-1]){dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
    }else{dp[i][j] = dp[i-1][j];
    }

    在该元素相同时,有两种可能1:使用该元素,所以0_i-2中有多少个0_j-2,这样再加上i-1和j-1,这满足了0_i-1的字符串中有0_j-1的字符串;第二种可能,不使用该元素,直接看0_i-2的字符串中有0_j-1的字符串            不相同时,只能不用i-1,要跳过i-1,所以沿用前一个结果

  3. dp数组初始化:for(int i = 0; i <= s.size(); i++) dp[i][0] = 1;
  4. 遍历顺序:顺序
  5. 时间复杂度:      O(n*m)

代码

class Solution {
public:int numDistinct(string s, string t) {long long mod = 10E9 + 7;vector< vector<long long>> dp(s.size() + 1, vector<long long>(t.size() + 1, 0));for(int i = 0; i <= s.size(); i++) dp[i][0] = 1;for(int i = 1; i <= s.size(); i++){for(int j = 1; j <= t.size(); j++){if(s[i-1] == t[j-1]){dp[i][j] = dp[i-1][j-1] + dp[i-1][j];}else{dp[i][j] = dp[i-1][j];}}}return dp[s.size()][t.size()];}
};  

版权声明:

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

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