uva 310 - L--system bfs
2012-11-25 18:07
295 查看
310 - L--system
一个知识性题目,介绍了一个L系统,L系统有个递归变换规则,就是可以把其中所有的字母,按照规则替换成对应的字符串,具体的可以维基一下。
这题是给了两个规则,要求两种规则同时作用,问能不能能个创造一个字符串包含目标串,主要要注意的就是如果初始串就包含目标串,则要截取判断,和对于状态长度的最大限度。
只要搞清楚了规则,那么直接bfs即可
一个知识性题目,介绍了一个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"); } }
相关文章推荐
- UVA - 310 L--system(bfs+hash)
- uva:310 - L--system(字符串处理+ bfs)
- UVA - 310 L--system 隐式图搜索
- uva310 L-system L系统 哈希判重又TLE
- uva 310 L--system(隐式图搜索+字符串处理)
- UVA - 310 L--system
- uva 310 L--system(隐式图搜索+字符串处理)
- UVa 310 - L--system
- uva 310 L--system
- UVa 310 & ZOJ 1306 - L--system
- UVA 310 L--system
- uva310 - L--system
- uva 532(bfs)
- UVA 11624 Fire! 两次BFS求解
- UVA 11078 - Open Credit System
- UVA 12664(BFS)
- 例题7-9 UVA - 1601 && POJ 3523 The Morning after Halloween (双向BFS)
- uva Cube painting(bfs水过)
- UVA 10798 - Be wary of Roses (bfs+hash)
- UVA 439 BFS 骑士的移动