pro:开始有一个字母虫,然后字母虫在每一天可以选择自己身上的部分字母变换,变换规则形如A->BC。 现状给定最终字母虫的字符串,求最少用了多少天。

如有规则A->BC,B->AC,C->AB;则ACAB可以见过三天(A-BC-ACC-ACAC)或者两天(A-BC-ACAB)得来。 规则不超过80,字符串长度不超过50;

sol:dp[i][j][p]表示,最开始只有字母p,变换到[i,j]区间的最小天数。

显然初始:dp[i][i][x]=c[i]==x?0:inf;

其他:       dp[i][j][x]=min(dp[i][k][p],dp[k+1][j][q]+1);  当且当存在规则x->pq;

经验:在倒推比较难的情况下,我们表示的状态可以是最初状态。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
char c[maxn],s[maxn*][];
int dp[maxn][maxn][maxn];
vector<int>A[],B[];
int main()
{
int N,L;
while(~scanf("%d",&N)){
if(!N) break;
rep(i,,) A[i].clear(),B[i].clear();
rep(i,,N){
scanf("%s",s[i]);
A[s[i][]-'A'].push_back(s[i][]-'A');
B[s[i][]-'A'].push_back(s[i][]-'A');
}
scanf("%s",c+); L=strlen(c+);
rep(i,,L) rep(j,i,L) rep(k,,) dp[i][j][k]=L+;
rep(i,,L) dp[i][i][c[i]-'A']=;
rep(i,,L) {
rep(l,,L-i){
int r=l+i;
rep(p,,){
rep(k,l,r-){
for(int t=;t<A[p].size();t++){
dp[l][r][p]=min(dp[l][r][p],max(dp[l][k][A[p][t]],dp[k+][r][B[p][t]])+);
}
}
}
}
}
int ans=L+;
rep(i,,) if(dp[][L][i]!=-) ans=min(ans,dp[][L][i]);
if(ans==L+) ans=-;
printf("%d\n",ans);
}
return ;
}

最新文章

  1. 8 HTML&amp;JS等前端知识系列之Ajax的例子
  2. ORA-12569: TNS: 包校验和失败解决方法一例
  3. KDE、GNOME 和 XFCE 桌面比较
  4. display 和 visibility 的区别
  5. WIN 8.1 x64 环境下 COM Surrogate 停止工作解决方案
  6. Java 多线程 锁 存款 取款
  7. Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案
  8. iOS应用之间的跳转与数据传递
  9. 关于 HTML5 的 11 个让人难以接受的事实
  10. T-SQL语句中中括号([])的用法是什么,什么时候该用
  11. Morris遍历-如何用空间复杂度O(1)来遍历二叉树
  12. Hadoop 2.7.3 完全分布式维护-简单测试篇
  13. mac下安装rzsz
  14. 爬虫利器_you-get
  15. Linux(Ubuntu)下也能用搜狗输入法了!!!
  16. send anywhere真的好用啊
  17. 如何把GitHub中的开源项目导入到Eclipse
  18. 淘宝网前端开发面试题(二)--JS 面试题
  19. Codeforces 1099 B. Squares and Segments-思维(Codeforces Round #530 (Div. 2))
  20. SOAP UI

热门文章

  1. 全网最详细的Windows里Git client客户端管理工具SourceTree的下载与安装(图文详解)
  2. RestTemplate的使用和原理你都烂熟于胸了吗?【享学Spring MVC】
  3. golang(一)
  4. Service must be explitict android 5.0问题
  5. C#-Windows服务创建和运行
  6. C# vb .net实现焦距淡色特效滤镜
  7. Windows 7 下安装 docker
  8. Java web服务端参数校验Javax.validation (springboot)
  9. 【Java基础】- Java学习路线图
  10. Android Studio 打包生成apk