DP - 字符混编

字符混编 #

Problem's Link
#

 ----------------------------------------------------------------------------

Mean: 

analyse:

Time complexity: O(N)

 

view code

#include "bits/stdc++.h"
using namespace std;

class Mixture {
public:
   bool chkMixture(string A, int n, string B, int m, string C, int v) {
       if (v != n + m)
           return false;
       bool dp[n + 1][m + 1];
       memset(dp,0,sizeof dp);
       for (int i = 1; i < n; ++i)
           dp[i][0] = (A[i-1] == C[i-1] ? 1 : 0);
       for (int i = 1; i < m; ++i)
           dp[0][i] = (B[i-1] == C[i-1] ? 1 : 0);
       for (int i = 1; i <=n; ++i) {
           for (int j = 1; j <= m; ++j) {
               dp[i][j] = (A[i-1] == C[i + j - 1] && dp[i - 1][j]) || (B[j-1] == C[i + j - 1] && dp[i][j - 1]);
           }
       }
       cout<<"------------------------------------------------------------"<<endl;
       for (int i = 0; i <= n; ++i)
       {
           for (int j = 0; j <= m; ++j)
           {
               cout<<dp[i][j]<<" ";
           }
           cout<<endl;
       }
       cout<<"------------------------------------------------------------"<<endl;
       return dp[n][m];
   }
};

int main(int argc, char const *argv[]) {
   string s1, s2, s3;
   while (cin >> s1 >> s2 >> s3) {
       Mixture solution;
       if (solution.chkMixture(s1, s1.length(), s2, s2.length(), s3, s3.length()))
           cout << "Yes." << endl;
       else
           cout << "No." << endl;
   }
   return 0;
}
 
 
posted @   北岛知寒  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示
主题色彩