题意:输入四个字符串a,b,w,z,经过一定的替换规则,问w或者w的子串中是否包含z.

替换规则如下.w中的字符a全部替换成a字符串,b字符全部替换成b字符串.

枚举过程,

根据替换规则对w进行替换,生成新的字符串w2,

对w2的子串中长度小于等于z的字符串全部枚举一遍,题目输入限制n<=16,那么,w的子串最多为2^16

#include <iostream>
#include<map>
#include<memory.h>
#include<stdio.h>
#include<string>
#include<queue>
#include<vector>
using namespace std;
string a;
string b;
string bg;
string ed;
map<string, int>maps;
queue<string>q;
int ok = ; void judge(string temp)
{
//枚举字串
for (int i = ;i < temp.size() - ;i++)
{
string temp2 = "";
for (int j = i;j < i + ed.size() && j < temp.size();j++)
{
temp2 += temp[j];
}
if (temp2 == ed)
{
ok = ;
return;
}
else if (maps[temp2] == )
{
q.push(temp2);
maps[temp2] = ;
}
}
} void bfs(string temp)
{ if (temp.size() >= ed.size())
judge(temp);
if (ok)
return;
q.push(temp);
maps[temp] = ;
while (q.empty() == false)
{
temp = q.front();
q.pop();
string temp2 = "";
for (int i = ;i < temp.size();i++)
{
if (temp[i] == 'a')
temp2 += a;
if (temp[i] == 'b')
temp2 += b;
}
judge(temp2);
if (ok)
return;
}
} int main()
{
while (cin >> a)
{
cin >> b >> bg >> ed;
ok = ;
maps.clear();
while (q.empty() == false)
q.pop();
bfs(bg);
if (ok)
cout << "YES" << endl;
else
cout << "NO" << endl; }
}

uva-310-L--system-暴力枚举的更多相关文章

  1. UVA.12716 GCD XOR (暴力枚举 数论GCD)

    UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 ...

  2. Uva 10167 - Birthday Cake 暴力枚举 随机

      Problem G. Birthday Cake Background Lucy and Lily are twins. Today is their birthday. Mother buys ...

  3. UVA 725 division【暴力枚举】

    [题意]:输入正整数n,用0~9这10个数字不重复组成两个五位数abcde和fghij,使得abcde/fghij的商为n,按顺序输出所有结果.如果没有找到则输出“There are no solut ...

  4. UVa 10603 Fill [暴力枚举、路径搜索]

    10603 Fill There are three jugs with a volume of a, b and c liters. (a, b, and c are positive intege ...

  5. Gym 101194L / UVALive 7908 - World Cup - [三进制状压暴力枚举][2016 EC-Final Problem L]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  6. UVA 10012 How Big Is It?(暴力枚举)

      How Big Is It?  Ian's going to California, and he has to pack his things, including his collection ...

  7. uva 11088 暴力枚举子集/状压dp

    https://vjudge.net/problem/UVA-11088 对于每一种子集的情况暴力枚举最后一个三人小组取最大的一种情况即可,我提前把三个人的子集情况给筛出来了. 即 f[S]=MAX{ ...

  8. UVA - 11464 Even Parity 【暴力枚举】

    题意 给出一个 01 二维方阵 可以将里面的 0 改成1 但是 不能够 将 1 改成 0 然后这个方阵 会对应另外一个 方阵 另外一个方阵当中的元素 为 上 下 左 右 四个元素(如果存在)的和 要求 ...

  9. 紫书 例题 10-2 UVa 12169 (暴力枚举)

    就是暴力枚举a, b然后和题目给的数据比较就ok了. 刘汝佳这道题的讲解有点迷,书上讲有x1和a可以算出x2, 但是很明显x2 = (a * x1 +b) 没有b怎么算x2?然后我就思考了很久,最后去 ...

  10. HNU 12886 Cracking the Safe(暴力枚举)

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12886&courseid=274 解题报告:输入4个数 ...

随机推荐

  1. 前端之js-echarts组件介绍

    Echarts.init: 全局 echarts 对象,在 script 标签引入 echarts.js 文件后获得,或者在 AMD 环境中通过 require('echarts') 获得. < ...

  2. NetBeans IDE 多行标签设置方法

  3. Django--django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE

    Django序列化时遇到错误: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESP ...

  4. ALGO-12_蓝桥杯_算法训练_幂方分解(递归)

    问题描述 任何一个正整数都可以用2的幂次方表示.例如: =++ 同时约定方次用括号来表示,即ab 可表示为a(b). 由此可知,137可表示为: ()+()+() 进一步:= ++ (21用2表示) ...

  5. 【AMQ】之概述

    消息中间件的主要作用: 基本功能,将信息以消息的形式在多个应用之间传递 特点: 消息异步接受,发送者不需要等待接收者的响应,减少系统之间的耦合性. 消息可靠性接收,确保消息在中间件可靠保存,只有接收方 ...

  6. SpringBoot之退出服务(exit)时调用自定义的销毁方法

    我们在工作中有时候可能会遇到这样场景,需要在退出容器的时候执行某些操作.SpringBoot中有两种方法可以供我们来选择(其实就是spring中我们常用的方式.只是destory-method是在XM ...

  7. PAT 乙级 1071 小赌怡情(15 分)

    1071 小赌怡情(15 分) 常言道“小赌怡情”.这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大还是小:玩家下注 t 个筹码后,计算机给出第二个数.若玩 ...

  8. vue之v-for

    vue.js 的循环渲染是依赖于 v-for 指令,它能够根据 vue 的实例里面的信息,循环遍历所需数据,然后渲染出相应的内容.它可以遍历数组类型以及对象类型的数据,js 里面的数组本身实质上也是对 ...

  9. Python 解析XML实例(xml.sax)

    已知movies.xml <collection shelf="New Arrivals"> <movie title="Enemy Behind&qu ...

  10. 学习-工作:GTD

    ylbtech-学习-工作:GTD GTD就是Getting Things Done的缩写,翻译过来就是“把事情做完”,是一个管理时间的方法.GTD的核心理念概括就是必须记录下来要做的事,然后整理安排 ...