标签:没有 count void 通过 lol lag main string tps
NO ANSWER!
。#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <list>
using namespace std;
#define R read()
#define GC getchar()
#define ll long long
#define ull unsigned long long
#define INF 0x7fffffff
#define LLINF 0x7fffffffffffffff
ll read(){
ll s=0,f=1;
char c=GC;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-f;c=GC;}
while(c>=‘0‘&&c<=‘9‘){s=s*10+c-‘0‘;c=GC;}
return s*f;
}
string a,b;
string x[10],y[10];
int tot=1;
queue<string> q;
queue<int> step;
map<string,int> mp;
int flag=1;
void bfs(){
q.push(a);
step.push(0);//进队列
mp[a]=1;//标记这个字符串搜过
while(!q.empty()){
string s=q.front();
int st=step.front();//记录
if(st>10){//如果步数超过了10步,那么直接滚粗就好了
return ;
}
if(s==b){//如果相等了就说明已经有答案了,输出标记一下
printf("%d",st);
flag=0;
return ;
}
for(int i=1;i<=tot;++i){
int up=0;//为了配合find的使用,意思是从第up位开始搜有没有x[i]
while(s.find(x[i],up)!=s.npos){//while是因为防止有多个字符串x[i]的数据出现
string str=s;
int id=s.find(x[i],up);
str.replace(id,x[i].length(),y[i]);//替换
if(!mp.count(str)){//如果没有搜到过
q.push(str);
step.push(st+1);//入队列
mp[str]=1;//标记
}
up=id+1;//为下一次搜索x[i]做准备
}
}
q.pop();
step.pop();//出队列
}
}
int main(){
cin>>a>>b;
while(cin>>x[tot]>>y[tot]){
++tot;
}//输入
--tot;
bfs();
if(flag){//若没有标记则说明没有答案输出,就输出"NO ANSWER!"
printf("NO ANSWER!");
}
return 0;
}
标签:没有 count void 通过 lol lag main string tps
原文地址:https://www.cnblogs.com/FUXyao/p/12888448.html