您的位置:首页 > 新闻 > 会展 > 网站制作视频课程_推广方法_网络营销的方式包括_网站推广模式

网站制作视频课程_推广方法_网络营销的方式包括_网站推广模式

2024/10/17 13:17:03 来源:https://blog.csdn.net/MogulNemenis/article/details/142930511  浏览:    关键词:网站制作视频课程_推广方法_网络营销的方式包括_网站推广模式
网站制作视频课程_推广方法_网络营销的方式包括_网站推广模式

分割等和子集

题目

LCR 101. 分割等和子集 - 力扣(LeetCode)

思路

这里使用一个动态规划数组 dp,其中 dp[i] 表示能否通过数组中的某些元素组合得到和为 i 的子集。

dp[result] 如果为 true,意味着存在一个子集的和为 result(即 sum / 2),因此可以将数组分为两个和相等的子集,返回 true;否则返回 false。

代码

public boolean canPartition(int[] nums) {int sum = 0;for(int num:nums){sum=sum+num;}Arrays.sort(nums);if(sum%2!=0){return false;}int result = sum/2;boolean[] dp = new boolean[result + 1];dp[0] = true;for (int i = 1; i <= result; i++) {for (int j = result; j >= nums[i - 1]; j--) {dp[j] |= dp[j - nums[i - 1]];}}return dp[result];}

不同的子序列

题目

LCR 097. 不同的子序列 - 力扣(LeetCode)

思路

dp[i][j]代表s串的前i个字符里有多少个t子串的前j个字符的子串

状态转移方程就是 

  1. 如果s.charAt(i-1)==t.charAt(j-1),dp[i][j]=dp[i-1][j]+dp[i-1][j-1]
  2. 否则 dp[i][j]=dp[i-1][j]

代码

public int numDistinct(String s, String t) {int m = s.length();int n = t.length();int[][] dp = new int[m+1][n+1];for(int i=0;i<=m;i++){dp[i][0]=1;}for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(s.charAt(i-1)==t.charAt(j-1)){dp[i][j]=dp[i-1][j]+dp[i-1][j-1];}else{dp[i][j]=dp[i-1][j];}}}return dp[m][n];}

模糊搜索验证

题目

LCR 137. 模糊搜索验证 - 力扣(LeetCode)

思路

dp[i][j] 表示 input 的前 i 个字符是否可以匹配 article 的前 j 个字符。

dp[0][0] 表示空字符串和空字符串是匹配的,因此 dp[0][0] = true。
对于 dp[i][0](即 article 为空的情况),只有当 input 是由 * 组成的才可能匹配。我们需要处理 '*' 能否匹配零次的情况。

如果 input[i-1] == article[j-1] 或者 input[i-1] == '.',表示当前字符匹配,那么 dp[i][j] = dp[i-1][j-1]。
如果 input[i-1] == '*',则分两种情况:

  1. '*'匹配零次:可以忽略 '*' 和其前一个字符,转移为 dp[i][j-2]。
  2. '*'匹配一次或多次:如果 input[i-2] == article[j-1] 或 input[i-2] == '.',则表示可以继续匹配当前字符,转移为 dp[i][j-1]。

代码

public boolean articleMatch(String article, String input) {int m = input.length();int n = article.length();boolean[][] dp = new boolean[m + 1][n + 1];dp[0][0] = true;for (int i = 1; i <= m; i++) {if (input.charAt(i - 1) == '*' && dp[i - 2][0]) {dp[i][0] = true;}}for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {char in = input.charAt(i - 1);char art = article.charAt(j - 1);if (in == art || in == '.') {dp[i][j] = dp[i - 1][j - 1];}else if (in == '*') {dp[i][j] = dp[i - 2][j]; if (input.charAt(i - 2) == art || input.charAt(i - 2) == '.') {dp[i][j] = dp[i][j] || dp[i][j - 1]; }}}}return dp[m][n];}

版权声明:

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

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