#include<cstdio> #include<iostream> #include<set> #include<queue> #include<string> #include<map> #include<cstring> using namespace std; string s; int k,ans; map<char,char> mp; set<string> se; queue<string> que; int main(){ cin>>s>>k; for(int i=0;i<k;i++){ char a,b; cin>>a>>b; mp[a]=b; } que.push(s); ans++; se.insert(s); while(!que.empty()){ string st = que.front(); que.pop(); //遍历每个字符 for(int i=0;i<st.length();i++){ if(mp.count(st[i])){ string ne = st.substr(0,i)+mp[st[i]]+st.substr(i+1,st.length()); if(!se.count(ne)){ se.insert(ne); que.push(ne); // cout<<ne<<endl; ans++; } } } } cout<<ans<<endl; return 0; }
我这样用宽搜做为什么只能AC一个点
全部评论
(10) 回帖