思路:

f[i][j][k]表示i到j匹配了字母k

if(m,n能匹配上k)

f[i][j][k]|=f[i][l][m]&f[l+1][j][n]

一个大枚举 就OK了~

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int W,I,N,G;
bool f[205][205][5],vis[5][5][5],flag;
char ch[3],goal[222];
int get(char x){
if(x=='W')return 1;
if(x=='I')return 2;
if(x=='N')return 3;
return 4;
}
int main(){
scanf("%d%d%d%d",&W,&I,&N,&G);
for(int i=1;i<=W;i++)
scanf("%s",ch),vis[1][get(ch[0])][get(ch[1])]=1;
for(int i=1;i<=I;i++)
scanf("%s",ch),vis[2][get(ch[0])][get(ch[1])]=1;
for(int i=1;i<=N;i++)
scanf("%s",ch),vis[3][get(ch[0])][get(ch[1])]=1;
for(int i=1;i<=G;i++)
scanf("%s",ch),vis[4][get(ch[0])][get(ch[1])]=1;
scanf("%s",goal+1);
int len=strlen(goal+1);
for(int i=1;i<=len;i++)f[i][i][get(goal[i])]=1;
for(int le=1;le<=len;le++)
for(int st=1;st<=len;st++){
int ed=st+le;
if(ed>len)break;
for(int k=1;k<=4;k++)
for(int l=st;l<ed;l++)
for(int m=1;m<=4;m++)
for(int n=1;n<=4;n++)
if(vis[k][m][n])
f[st][ed][k]|=f[st][l][m]&f[l+1][ed][n];
}
if(f[1][len][1])putchar('W'),flag=1;
if(f[1][len][2])putchar('I'),flag=1;
if(f[1][len][3])putchar('N'),flag=1;
if(f[1][len][4])putchar('G'),flag=1;
if(!flag)puts("The name is wrong!");
}

最新文章

  1. RocketMQ原理解析-NameServer
  2. 德国W家HIPP 奶粉有货播报:2014.7.8 HIPP 奶粉 1+ 4盒装有货啦!
  3. AngularJs filter 过滤器
  4. JAVA环境安装
  5. Oracle- PL/SQL DEV的远程配置
  6. Delphi 2007体验!
  7. Halcon算子--区域特征
  8. SpringBoot基础系列一
  9. jQuery入门学习
  10. Python 数据可视化 -- pillow 处理图像
  11. UVA1623-Enter The Dragon(并查集)
  12. Python图形编程探索系列-02-框架设计
  13. js区别手机和电脑打开网页
  14. 学习protobuf 感想
  15. android中RecyclerView控件的列表项横向排列
  16. bash脚本 while语法
  17. Github for Windows 登录时报代理问题?
  18. Kubernetes学习之路(十二)之Pod控制器--ReplicaSet、Deployment
  19. 第五章 类加载器ClassLoader源码解析
  20. SQL优化:清理生产环境中已失效字段基本步骤

热门文章

  1. 【Python常见问题总结】
  2. Linux 程序包管理-RPM
  3. 二叉排序树(B-Tree)-c实现
  4. Zookeeper入门-Linux环境下异常ConnectionLossException解决
  5. 微信小程序踩坑记
  6. 【BZOJ 1179】[Apio2009]Atm
  7. C++容器(三):pair类型
  8. hadoop-16-sqoop导入oracle数据
  9. [Angular] Create a ng-true-value and ng-false-value in Angular by controlValueAccessor
  10. 对于startActivity的使用改进