noip提高组2002 字串变换(luogu P1032 )
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了noip提高组2002 字串变换(luogu P1032 )相关的知识,希望对你有一定的参考价值。
原题链接:https://www.luogu.org/problem/show?pid=1032
对于此题,我只想说,string虽然慢,但是功能太强。
还有,map大法好,不但跑的飞快,而且简化了算法,普通的bfs就解决了。
#include<cstdio> #include<map> #include<queue> #include<cstring> #include<iostream> using namespace std; struct node { string s; int l; }st; queue<node>q; map<string,int>vis; string a,b,c[25][2]; int n=1; int main() { cin>>a>>b; while(cin>>c[n][0]>>c[n][1]) n++; n--; st.s=a;st.l=0; q.push(st); while(!q.empty()) { node t=q.front();q.pop(); if(t.s==b&&t.l<11) { printf("%d",t.l); return 0; } if(vis[t.s]==0) { vis[t.s]=1; for(int i=1;i<=n;i++) { if(t.s.find(c[i][0])>=0) { for(int j=t.s.find(c[i][0]);j>=0&&j<=t.s.size()-c[i][0].size();j=t.s.find(c[i][0],j+1)) { node tmp; tmp.s=t.s;tmp.l=t.l+1; tmp.s.replace(j,c[i][0].size(),c[i][1]); q.push(tmp); } } } } } printf("NO ANSWER!"); return 0; }
以上是关于noip提高组2002 字串变换(luogu P1032 )的主要内容,如果未能解决你的问题,请参考以下文章