uva 310 - L--system bfs

简介:

310 - L--system

 

     一个知识性题目,介绍了一个L系统,L系统有个递归变换规则,就是可以把其中所有的字母,按照规则替换成对应的字符串,具体的可以维基一下。

 

     这题是给了两个规则,要求两种规则同时作用,问能不能能个创造一个字符串包含目标串,主要要注意的就是如果初始串就包含目标串,则要截取判断,和对于状态长度的最大限度。

 

     只要搞清楚了规则,那么直接bfs即可

 

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <map>
#define INF 1E9
using namespace std;
char A[20],B[20],w[20];
int la,lw;
string aim,now,temp;
map<string,int> vis;
queue<string> q;
bool flag;
void change(string s)
{
    int i,len=s.size();
    now="";
    for(i=0;i<len;i++)
    {
        switch(s[i])
        {
            case 'a':now+=A;break;
            case 'b':now+=B;break;
        }
    }
    if(now.size()<=la)
    {
        if(vis[now])return;
        if(aim==now)flag=0;
        vis[now]=1;q.push(now);
    }
    else//超出长度,截取
    {
        len=now.size()-la;
        for(i=0;i<=len;i++)
        {
            temp=now.substr(i,la);
            if(vis[temp])continue;
            if(temp==aim)flag=0;
            vis[temp]=1;q.push(temp);
        }
    }
    return;
}
int main()
{
    int i,j;
    char t;
    while(~scanf("%s%s%s",A,B,w))
    {
        flag=1;
        cin>>aim;
        la=aim.size();lw=strlen(w);
        vis.clear();
        while(!q.empty())q.pop();
        for(i=0;i<lw&&flag;i++)//截取原字符串
          for(j=i+1;j<=lw&&flag;j++)
          {
              t=w[j];
              w[j]='\0';
              temp=string(w+i);
              w[j]=t;
              if(vis[temp])continue;
              if(temp==aim)flag=0;
              vis[temp]=1;
              q.push(temp);
         }
        while(!q.empty()&&flag)
        {
            change(q.front());
            q.pop();
        }
        printf("%s\n",flag?"NO":"YES");
    }
}


 

   

目录
相关文章
|
9月前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
465 15
|
机器学习/深度学习 人工智能 移动开发
阿里又出新玩法|开箱即用的算法集 MNN Kit
今天的移动开发,AI随处可见:从手机淘宝里的拍立淘,到淘宝直播里的商品识别,到头条的个性化推荐,到抖音直播里的人脸识别,人工智能在移动app里发挥的作用越来越大。它也逐渐从Snapchat那些社交软件的一些比较好玩的属性(如人脸贴纸),慢慢发展到了淘宝里面那些能够真正为商业赋能的应用场景。在这样的背景下,阿里巴巴淘系技术的MNN团队,近日发布了开箱即用的工具集MNN Kit。
3102 0
阿里又出新玩法|开箱即用的算法集 MNN Kit
|
11月前
|
机器学习/深度学习 人工智能 算法
人工智能在医疗诊断中的应用与挑战
本文探讨了人工智能(AI)在医疗诊断领域的应用及其面临的挑战。随着技术的不断进步,AI已经在医学影像分析、疾病预测和个性化治疗等方面展现出巨大潜力。然而,数据隐私、算法透明度以及临床整合等问题仍然是亟待解决的关键问题。本文旨在通过分析当前AI技术在医疗诊断中的具体应用案例,探讨其带来的优势和潜在风险,并提出相应的解决策略,以期为未来AI在医疗领域的深入应用提供参考。
330 3
|
12月前
|
供应链 安全 物联网
新技术趋势与应用:区块链、物联网和虚拟现实的未来发展
本文将探讨新兴技术如区块链、物联网和虚拟现实的发展趋势和应用场景。区块链技术作为一种分布式数据库,具有去中心化、安全透明等特点,被广泛应用于金融、供应链等领域。物联网技术通过将物品与互联网连接,实现智能化管理和控制,应用于智能家居、智能交通等场景。虚拟现实技术则通过模拟虚拟环境,提供沉浸式体验,应用于游戏、教育等领域。这些技术的发展将深刻影响我们的生活和社会。
148 3
|
文字识别
阿里云商标智能注册275元费用价格、注册流程图文详解
阿里云商标智能注册275元包含10个项目,每多一项加收32元。阿里云商标智能注册申请流程包括商标基本信息填写、商标申请人填写等
1773 1
阿里云商标智能注册275元费用价格、注册流程图文详解
|
开发框架 开发者 前端开发
重磅首发 | 承载亿级流量的开发框架,闲鱼Flutter技术解析与实战大公开
去年闲鱼发布的《Flutter in action》为开发者带去一手的实践经验总结,现在《Flutter in action》全新升级啦!这本书并非基础知识的简单罗列,而是从一线问题出发,循序渐进,娓娓道来。不仅把Flutter的重要理念讲得极为清晰, 而且给开发者提供了应对眼前各种问题的实用方法。同时,书中还给出了详尽的可以融会贯通、举一反三的思路,理论陈述和问题分析面面俱到,力求让读者可以获得全面系统的技术知识。
68049 0
重磅首发 | 承载亿级流量的开发框架,闲鱼Flutter技术解析与实战大公开
video标签自动播放视频和移动端封面空白问题解决
video标签自动播放视频和移动端封面空白问题解决
1350 0
video标签自动播放视频和移动端封面空白问题解决
|
新零售 供应链 双11
聚划算百亿补贴背后的真相:品牌赋能,惠及用户
本电商平台吸引用户的关键,已经从“吸睛”转化为“持续”。在新零售进入下半场后,五花八门新玩法所带来的新鲜感,不如平台与用户建立的长期信任更重要。 去年12月11日,聚划算百亿补贴正式上线。回顾一周年,聚划算百亿补贴从66盛典起航,在99划算节渐入佳境,双11引爆燃点,最后在双12为一周年画上圆满句号。
715 0
聚划算百亿补贴背后的真相:品牌赋能,惠及用户
|
异构计算 SoC
走进武汉研究所 探秘荣耀手机的「液冷散热技术」
前不久荣耀发布了 Note10 手机,最大亮点莫过于「THE NINE液冷散热技术」。据官方介绍,荣耀成功将与 MacBook Air 液冷管直径(5mm)一样的 D5 液冷管塞进了仅有 7.65mm 厚的机身中,最大幅度地覆盖了整机进行科学散热。这在手机里还是首次实现这样 PC 级的散热技术。
902 0
走进武汉研究所 探秘荣耀手机的「液冷散热技术」
|
云安全 机器学习/深度学习 弹性计算
阿里云ACP认证考试样题和考试大纲下载汇总
阿里云ACP认证考试样题和考试大纲下载,阿里云ACP认证分为五个方向,阿里云ACP网分享考试样题和考试大纲并提供下载链接: ACP认证考试分类 阿里云ACP专业工程师认证考试目前分为五个方向,即云计算、大数据、大数据分析师、云安全、企业互联网架构,考试方向不同考试题目、样题和考试大纲也不同,五个方...