字符串的交错组成 动态规划
来源:互联网 发布:深圳云计算招聘岗位 编辑:程序博客网 时间:2024/05/17 08:49
1、问题描述
给定三个三个字符串str1,str2和aim,如果aim包含且仅包含来自str1和str2的所有字符,而且在aim中属于str1的字符之间还保持原来的顺序,属于str2中的字符也是如此,那么称aim是str1和str2的交错组成。判断aim是不是str1和str2的交错组成。
2、输入
第一行输入str1,第二行输入str2,第三行输入aim
3、输出
如果是交错组成输出 1 ,否则输出 0 。
4、题目解析
1)在本题中有一个隐含的关键条件:aim的长度始终等于str1的长度加上str2的长度,也就是说当str1长度为i,str2长度为j的时候,aim的长度为i+j。
2)则状态dp[i][j]就代表aim[0...i+j-1]是不是str1[0...i-1]和str2[0...j-1]的交错组成。
3)判断是不是交错组成条件:dp[i][j-1]&&str2[j-1]==aim[i+j-1]或者dp[i-1][j]&&str1[i-1]==aim[i+j-1];否则是false
5、下面是代码:
#include<iostream>#include<vector>#include<string>using namespace std;bool isCross(string, string, string);int main() {string str1, str2, aim;getline(cin, str1);getline(cin, str2);getline(cin, aim);cout << isCross(str1, str2, aim) << endl;}bool isCross(string str1, string str2, string aim) {int i, j;int len1, len2, len_aim;len1 = str1.length();len2 = str2.length();len_aim = aim.length();if (len_aim != len1 + len2) {return false;}vector<vector<int>>dp(len1 + 1, vector<int>(len2 + 1));//dp[i][j]代表aim前i+j位是否是str1的前i位和str2的前j位的交错组成,dp[0][0]代表空字符串 //为dp赋值dp[0][0] = 1;for (i = 1; i < len1 + 1; ++i) {if (str1[i - 1] == aim[i - 1])dp[i][0] = 1;elsedp[i][0] = 0;}for (j = 1; j < len2 + 1; ++j) {if (str2[j - 1] == aim[j - 1])dp[0][j] = 1;elsedp[0][j] = 0;}for (i = 1; i < len1 + 1; ++i) {for (j = 1; j < len2 + 1; ++j) {if (dp[i - 1][j] == 1 && aim[i + j - 1] == str1[i - 1]) {//要注意边界dp[i][j] = 1;}else if (dp[i][j - 1] == 1 && aim[i + j - 1] == str2[j - 1]) {dp[i][j] = 1;}else {dp[i][j] = 0;}}}if (dp[len1][len2] == 1)return true;elsereturn false;}
阅读全文
0 0
- 字符串的交错组成 动态规划
- 递归与动态规划---字符串的交错组成
- 动态规划——字符串的交错组成
- 字符串交错组成(动态规划)
- 动态规划解决字符串交错组成问题
- 动态规划-交错组成
- 动态规划——字符串的交错组成(interleaving-string)
- 字符串的交错组成
- 字符串的交错组成
- 字符串的交错组成
- 交错字符串——动态规划
- 字符串交错组成
- 字符串交错组成
- 字符串交错组成
- 【动态规划】交错重排
- [编程题]字符串交错组成
- 字符串交错组成--很优美的递归算法
- 动态规划交错匹配问题
- js导出文件保存在本地
- spark-streaming
- 【Person Re-ID】In Defense of the Triplet Loss for Person Re-Identification
- CSS基础(7.初识margin)
- 5种语言的callback实现
- 字符串的交错组成 动态规划
- 为什么使用redis
- Gilde加载网络图片到TextView的DrawableTop
- SparkWordCount源码原理
- iOS UIView设置背景图片4种方式
- glup 构建一个完整的jquery项目
- Non-maxing supressing非最大值抑制
- codeforces 485D. Maximum Value
- ON1 Photo RAW 2017(RAW格式图片处理工具)官方正式版V12.0.0.4006下载 | on1 photo raw 破解版下载