云一网站建设优推宝可以做自己网站吗
云一网站建设,优推宝可以做自己网站吗,百度关键词批量看排名工具,成都网络推广公司排行榜Problem: 940. Distinct Subsequences II 不同的子序列 II 耗时100%#xff0c;动态规划的#xff0c;考虑两种情况#xff0c;每种字符都不相同#xff0c;存在相同的字符#xff0c;dp[i]表示s[0#xff5e;i]子字符串的总数#xff0c;若是s[0~i-1]不存在s[i]#x…Problem: 940. Distinct Subsequences II 不同的子序列 II耗时100%动态规划的考虑两种情况每种字符都不相同存在相同的字符dp[i]表示s[0i]子字符串的总数若是s[0~i-1]不存在s[i]那么结果就是dp[i] (dp[i-1] * 2) 1;也就是之前的所有子字符串最后面加上s[i]即可以及包含了s[i]这个单个字符若s[0~i-1]存在s[i]假设s[j]s[i] (j i)那么s[0i-1]的子字符串s[j]可以被s[i]替代相当于s[0j-1]的子字符串添加上s[i]或s[j]此时末尾加上s[i]或者s[j]效果相同所以重复了一次需要减去的也就是dp[i] dp[i] - 1 - dp[j-1] modulo; -1是单字符s[i]本身重复了一次而且当j0时需要特殊考虑此时dp[i] dp[i] - 1 modulo考虑到dp[i] dp[i] - 1 - dp[ind-1]可能0所以需要加上模1e97Codeclass Solution { public: int ch[26]; const long long modulo 1e9 7; int distinctSubseqII(string s) { fill(ch, ch 26, -1); int n s.size(), ind; if(n1) return 1; vectorlong long dp(n, 0); dp[0] 1; ch[s[0]-a] 0; for(int i 1; i n; i) { dp[i] (dp[i-1] 1) 1; ind ch[s[i]-a]; if(ind 0) { dp[i] dp[i] - 1 modulo; } else if(ind 0){ dp[i] dp[i] - 1 - dp[ind-1] modulo; } ch[s[i]-a] i; dp[i] dp[i] % modulo; } int ret dp[n-1] % modulo; return ret; } };