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

poj 2817 WordStack

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

poj 2817 WordStack

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<set>#include<climits>using namespace std;const int maxn=200005;char s[11][11];int lp[11][11],dp[2][1<<11][11];int cmp(char *fir,char *sec){int lena=strlen(fir);int lenb=strlen(sec);int maxn=-1;for(int i=0;i<lena;i++){int tem=0;for(int j=0;j+i<lena&&j<lenb;j++){if(fir[i+j]==sec[j]) tem++;}if(tem>maxn) maxn=tem;}for(int i=0;i<lenb;i++){int tem=0;for(int j=0;j+i<lenb&&j<lena;j++){if(sec[i+j]==fir[j]) tem++;}if(tem>maxn) maxn=tem;}return maxn;}int main(){    int n;while(scanf("%d",&n)&&n>0){for(int i=0;i<n;i++){scanf("%s",s[i]);}for(int i=0;i<n;i++)for(int j=i+1;j<n;j++){lp[i][j]=cmp(s[i],s[j]);lp[j][i]=lp[i][j];}memset(dp,-1,sizeof(dp));int cur=0;for(int i=0;i<n;i++)  dp[0][1<<i][i]=0;for(int i=1;i<n;i++){cur^=1;for(int state=0;state<(1<<n)-1;state++){for(int k=0;k<n;k++){if(((1<<k)&state)==0)for(int nxt=0;nxt<n;nxt++){if(nxt!=k&&dp[cur^1][state][nxt]>=0)dp[cur][state|(1<<k)][k]=max(dp[cur][state|(1<<k)][k],dp[cur^1][state][nxt]+lp[k][nxt]);}}}}int finalstate=(1<<n)-1;int ans=-1;for(int i=0;i<n;i++) ans=ans>dp[cur][finalstate][i]?ans:dp[cur][finalstate][i];printf("%dn",ans);}}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/365061.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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