欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

hdu-5707-Combine String

发布时间:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 hdu-5707-Combine String 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题意:给你三个字符串,让你计算1 2 串和3 串是否匹配,就是3串可以分解为 1  2 串,字母顺序必须是按照1 2 串的字母前后顺序。

DP代码太深奥 看不太透,这个代码比较好理解一点:

#include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #include<iostream> #include<ctype.h> #include<map> #include<set> #include<string> #include<vector> #include<algorithm> #include<stdlib.h> #include<queue> #include<stack> using namespace std; map<char,int>ma,mc; int main() {int i,j,k;string a,b,c;while(cin>>a>>b>>c){ma.clear();mc.clear();int lea=a.size();int leb=b.size();int lec=c.size();for(i=0;i<lea;i++)ma[a[i]]++;for(i=0;i<leb;i++)ma[b[i]]++;int x=0;int y=0;for(i=0;i<lec;i++){mc[c[i]]++;if(x<lea&&c[i]==a[x])x++;if(y<leb&&c[i]==b[y])y++;}int fl=1;map<char,int>::iterator tt;for(tt=mc.begin();tt!=mc.end();tt++){if(mc[tt->first]!=ma[tt->first]){fl=0;break;}}if(fl){if(x==lea&&y==leb)printf("Yes\n");elseprintf("No\n");}elseprintf("No\n");} }

 

转载于:https://www.cnblogs.com/nr1999/p/8997251.html

总结

以上是生活随笔为你收集整理的hdu-5707-Combine String的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。