1055: [HAOI2008]玩具取名

题目:传送门

简要题意:

     就是固定四个字母,给出这四个字母分别可以由哪两个字母组成,然后在给你一个字符串,要求把这个字符串还原成原始的四个字母的其中一个。

题解:

   一开始看题有点瞎...想了想是一道超级大难题...

   其实就是一个很简单的DP...

   定义发f[i][j][s]:表示在字符串中i~j这个区间是否可以组合成为字符s

   转移很容易就可以想出来:因为如果f[i][k][s1]==f[k+1][j][s2]==1(i<=k<=j) && s1和s2可以组成s,那么f[i][j][s]=1;

   O(n^4)...大水题

代码:

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
char s[];
struct node
{
char s1,s2,id;
}st[];
bool f[][][];
int main()
{
int W,I,N,G;bool bk=false;
scanf("%d%d%d%d",&W,&I,&N,&G);
int len=;
for(int i=;i<=W;i++)
scanf("%s",s+),st[++len].s1=s[],st[len].s2=s[],st[len].id='W';
for(int i=;i<=I;i++)
scanf("%s",s+),st[++len].s1=s[],st[len].s2=s[],st[len].id='I';
for(int i=;i<=N;i++)
scanf("%s",s+),st[++len].s1=s[],st[len].s2=s[],st[len].id='N';
for(int i=;i<=G;i++)
scanf("%s",s+),st[++len].s1=s[],st[len].s2=s[],st[len].id='G';
scanf("%s",s+);
int len1=strlen(s+);
memset(f,,sizeof(f));
for(int i=;i<=len1;i++)f[i][i][s[i]]=true;
for(int i=;i<=len1;i++)//长度
for(int l=;l<=len1-i+;l++)//左端点
{
int r=l+i-;
for(int j=l;j<=r;j++)//断点
for(int k=;k<=len;k++)//枚举所有种类的字符串
if(f[l][j][st[k].s1] && f[j+][r][st[k].s2])
f[l][r][st[k].id]=true;
}
W='W';I='I';N='N';G='G';
if(f[][len1][W])printf("W"),bk=true;
if(f[][len1][I])printf("I"),bk=true;
if(f[][len1][N])printf("N"),bk=true;
if(f[][len1][G])printf("G"),bk=true;
if(bk==false)printf("The name is wrong!\n");
return ;
}

最新文章

  1. 数据结构算法C语言实现(十七)--- 5.1&amp;5.2数组:定义、顺序表示及实现
  2. 用python下载辞典
  3. jsf taglib定义函数
  4. [Design Pattern] Front Controller Pattern 简单案例
  5. rsync+inotify实现服务器之间文件实时同步--转
  6. C#委托的详细使用
  7. 银联+移动+三星PK微信、余额宝
  8. hdu_5677_ztr loves substring(回文+二维多重背包)
  9. 第九篇 C#实现螺旋矩阵
  10. 201521123008《Java程序设计》第十三周学习总结
  11. IT连创业系列:近期功能调整(小魔术功能从二级目录调整到一级栏目)
  12. linux系统设置cpu孤立
  13. Mybatis框架基础支持层——反射工具箱之MetaClass(7)
  14. 分布式系列六: WebService简介
  15. 容器加載Web工程的Web.xml文件介紹
  16. State状态模式
  17. 前后端跨域 _ cross domain
  18. 数组指针与指针数组(good)
  19. Python 构建方便的函数调用
  20. [boost] : lightweight_test库

热门文章

  1. HDU——T The King’s Problem
  2. android:px,dp(dip),sp的差别
  3. Android px,dp,pt,sp的差别
  4. Javaee 应用分层架构
  5. m_Orchestrate learning system---一、amazeui如何使用
  6. Photoshop CC (2015.2) 2016.1 版
  7. Ubuntu 14.04下安装CUDA8.0
  8. mac下maven的安装配置与使用
  9. javascript----三目运算符
  10. 原生的ajax请求----(播放托管到爱奇艺上的视频)