栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1934 Trip

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1934 Trip

#include <iostream>#include <string>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <map>#include <stack>#include <set>#include <cstdlib>#include <vector>#include <time.h>using namespace std;const int maxn = 100;int dp[maxn][maxn];int last1[maxn][27], last2[maxn][27];set <string> ans;char tmp[maxn];void dfs(int s1, int s2, int len){    if (len <= 0)    {        ans.insert(tmp);        return ;    }    if (s1 > 0 && s2 > 0)    {        for (int i = 0; i < 26; ++i)        { int t1 = last1[s1][i]; int t2 = last2[s2][i]; if (dp[t1][t2] == len) {     tmp[len - 1] = 'a' + i;     dfs(t1 - 1, t2 - 1, len - 1); }        }    }    return ;}void LCS(string s1, string s2){    memset(dp, 0, sizeof(dp));    for (int i = 1; i <= s1.size(); ++i)    {        for (int j = 1; j <= s2.size(); ++j)        { if (s1[i - 1] == s2[j - 1])     dp[i][j] = dp[i - 1][j - 1] + 1; else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);        }    }}void solve(string s1, string s2){    memset(last1, 0, sizeof(last1));    memset(last2, 0, sizeof(last2));    for (int i = 1; i <= s1.size(); ++i)    {        for (int j = 0; j < 26; ++j) last1[i][j] = last1[i - 1][j];        last1[i][s1[i - 1] - 'a'] = i;    }    for (int i = 1; i <= s2.size(); ++i)    {        for (int j = 0; j < 26; ++j) last2[i][j] = last2[i - 1][j];        last2[i][s2[i - 1] - 'a'] = i;    }    tmp[dp[s1.size()][s2.size()]] = '';    dfs(s1.size(), s2.size(), dp[s1.size()][s2.size()]);    for (set <string> :: iterator it = ans.begin(); it != ans.end(); ++it)        cout <<*it<<endl;}int main(){    string s1, s2;    while (cin >> s1 >> s2)    {        LCS(s1, s2);        solve(s1, s2);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号