求助
  • 板块灌水区
  • 楼主Nake_fu
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/4 10:13
  • 上次更新2024/8/4 11:20:47
查看原帖
求助
727172
Nake_fu楼主2024/8/4 10:13
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100,inf=160000;
struct node{
	string s;
	int step;
};
queue <node> q;
string a,b;
string s1[N],s2[N];
int l=1,l1,l2;
void bfs()
{
	q.push({a,0});
	while(!q.empty())
	{
		node h=q.front();
		q.pop();
		for(int i=0;i<h.s.size();i++)
		{
			for(int j=0;j<h.s.size();j++)
			{
				for(int k=1;k<=l;k++)
				{
					if(h.s.substr(i,j-i+1)==s1[k])
					{
						string x=h.s.substr(0,i)+s2[k]+h.s.substr(j+1,h.s.size()-1-j+1);
						if(x.size()>20) break;
						q.push({x,h.step+1});
						if(h.step+1>10) return ;
						if(x==b)
						{
							cout<<h.step+1;
							exit(0);
						}
					}	
				} 
			}
		} 
	}
}
signed main()
{
	cin>>a>>b;
	l1=a.size();
	l2=b.size();
	while(cin>>s1[l]>>s2[l])
	{
		++l;
	}
	l--;
	bfs();
	cout<<"NO ANSWER!";
	return 0;
}

题

2024/8/4 10:13
加载中...