1099 字串变换 2002年NOIP全国联赛提高组
1099 字串变换
2002年NOIP全国联赛提高组
已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则):
A1$ -> B1$
A2$ -> B2$
规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$、A2$ 可以变换为 B2$ …。
例如:A$='abcd' B$='xyz'
变换规则为:
‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’
则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为:
‘abcd’->‘xud’->‘xy’->‘xyz’
共进行了三次变换,使得 A$ 变换为B$。
输入格式如下:
A$ B$
A1$ B1$ \
A2$ B2$ |-> 变换规则
... ... /
所有字符串长度的上限为 20。
若在 10 步(包含 10步)以内能将 A$ 变换为 B$ ,则输出最少的变换步数;否则输出"NO ANSWER!"
abcd xyz
abc xu
ud y
y yz
3
hehe
string判重+删除
map记录步数,,
但是不知道为啥最后一个点过不了?
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<cstring> 5 #include<cstdlib> 6 #include<map> 7 using namespace std; 8 string a,b; 9 struct node 10 { 11 string x; 12 string y; 13 }bc[9]; 14 int num=1; 15 int step=0; 16 map<string,int>bushu; 17 string pc;// 18 int vis[101]; 19 void bfs() 20 { 21 queue<string>q; 22 q.push(a); 23 bushu[q.front()]=0; 24 25 while(q.size()!=0) 26 { 27 int numm=q.size(); 28 string p=q.front(); 29 if(p==b) 30 { 31 printf("%d",bushu[p]); 32 exit(0); 33 } 34 pc=pc+" "+p+" "; 35 q.pop(); 36 for(int i=1;i<=num;i++) 37 { 38 string dd=p; 39 string change=p; 40 while(1) 41 { 42 int where=change.find(bc[i].x); 43 if(where!=-1&&vis[where]==0) 44 { 45 vis[where]=1; 46 change[where]='*'; 47 48 int l=bc[i].x.length(); 49 p.replace(where,l,bc[i].y); 50 51 if(p==b) 52 { 53 printf("%d",bushu[dd]+1); 54 exit(0); 55 } 56 57 if(pc.find(p)!=-1)continue;// 判重 58 pc=pc+" "+p+" "; 59 60 bushu[p]=bushu[dd]+1; 61 62 cout<<step<<" "<<bushu[p]<<" "<<p<<endl; 63 64 if(p==b) 65 { 66 printf("%d",bushu[p]); 67 exit(0); 68 } 69 else 70 {step++;q.push(p);} 71 if(bushu[p]>10) 72 {printf("NO ANSWER!");exit(0);} 73 p=dd; 74 } 75 else break; 76 } 77 78 } 79 } 80 } 81 int main() 82 { 83 cin>>a>>b; 84 while(cin>>bc[num].x>>bc[num].y){num++;} 85 bfs(); 86 printf("NO ANSWER!"); 87 return 0; 88 }
转载于:https://www.cnblogs.com/zwfymqz/p/6764774.html
1099 字串变换 2002年NOIP全国联赛提高组相关推荐
- CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)
arr[i] :表示每个牌堆的纸牌的数目 平均值 :当纸牌数都一样多时,纸牌的数目从左向右考虑,每堆纸牌有三种状态: 1) arr[i] == 平均值,考虑arr[i+1] 2) arr[i] < ...
- 1009 产生数 2002年NOIP全国联赛普及组
009 产生数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个整数 n(n<10^ ...
- Codevs 1010 过河卒 2002年NOIP全国联赛普及组
1010 过河卒 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 如图,A 点有一个过河卒 ...
- 过河 2005年NOIP全国联赛提高组(离散化+dp)
1105 过河 2005年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在河上有一 ...
- 聪明的质监员 2011年NOIP全国联赛提高组(二分+前缀和)
聪明的质监员 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小 T 是一名质量监督员, ...
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...
- 选数 2002年NOIP全国联赛普及组
题目描述 Description 已知 n 个整数 x1,x2,-,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整 ...
- 【2002年NOIP全国联赛普及组】过河卒
描述 棋盘上 A 点有一个过河卒,需要走到目标 B 点.卒行走的规则:可以向下.或者向右.同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为" ...
- 棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组
/* 这道题要解决两个问题1)状态和状态方程2)怎么保证每走一步,所形成的路径不相交,以保证最后生成的完整路径不相交.(1)状态: dp[i][j][k][l] = 小渊传递的纸条到[i][j]的位置 ...
最新文章
- react 嵌套渲染_React 中嵌套数组数据如何渲染到前端页面
- LA3902 Network (树上dfs)
- 【Python刷题】_4
- OpenCV-Python教程(6)(7)(8): Sobel算子 Laplacian算子 Canny边缘检测
- [转载]大型网站架构演变和知识体系
- 详解Python科学计算扩展库numpy中的矩阵运算(1)
- GitHub - ErnestChen1/SmartSpeaker: 一个基于云端语音识别的智能控制设备,类似于天猫精灵,小爱同学。采用的芯片为stm32f407,wm8978,esp8266。...
- 核PCA与PCA的精髓和核函数的映射实质
- 阿里云祝顺民:云网络的十年“修路”历程
- 睡眠 应该用 a加权 c加权_?焦虑自测 ,看看你的焦虑程度到底有多深?是否影响睡眠?...
- 3.Java垃圾回收机制面试题
- python blp模型 估计_简述BLP模型
- 焊接技巧 -- 拖焊
- android 5.0 wifi移植,android wifi移植
- SpringCloud学习(十八):Config分布式配置中心的介绍与搭建
- 可口可乐和百事可乐查出杀虫剂成分!
- 海关跨境电商进口统一版信息化系统平台数据实时获取接口(试行) java版
- oracle里的tns是什么意思
- Android Studio Chipmunk Patch 2(android-studio-2021.2.1.16)下载地址
- 微信小程序面试题(个人学习)
热门文章
- springBoot后台发送内容至邮箱
- 检测到磁盘可能为uefi引导_Win10创意者无法更新提示“磁盘布局不受uefi固件支持”怎么办?...
- python 修饰器_python中用修饰器进行异常日志记录
- 大一计算机理论考试知识点,计算机一级考试理论知识点整理.doc
- spring cloud整合Ribbon
- linux u盘新建文件夹加密,linux磁盘的加密保护以及u盘加密的方法。
- postgres 显示变量_sql - 如何在PostgreSQL查询中声明变量
- 后勤管理系统_教育信息化2.0,2019年校园智慧后勤管理系统五大品牌
- python自动生成分析报告_利用PYTHON全自动生成分析报告
- aop区别 decorator_Decorator或Proxy模式;AOP拦截器