求助,只过了一个点
查看原帖
求助,只过了一个点
219884
jixiao_龙之舞楼主2021/8/17 16:00
#include<bits/stdc++.h>
#define fo q.front()
#define ao ans.front()
#define ch length()
#define str string
using namespace std;
int wei[21]; 
int check(str a,str b)
{
	memset(wei,0,sizeof(wei));
	int k=0,ans=0,t=0;
	for(int i=0;i<a.ch;i++)
	{
		if(a[i]==b[k])k++;
		else k=0;
		if(k==b.ch)wei[t]=i-k+1,i=wei[t]+1,t++,ans++,k=0;
	}
	return ans;
}
str bian(str s,str a,str b,int sum)
{
	str ss;
	int x=wei[sum],y=wei[sum]+a.ch;
	for(int i=0;i<x;i++)ss+=s[i];
	ss+=b;
	for(int i=y;i<s.ch;i++)ss+=s[i];
	return ss;
}
int main()
{
	int t=0,sum;
	str a[7],b[7];
	while(cin>>a[t]>>b[t])t++;
    queue<str> q; 
    queue<int> ans;
    q.push(a[0]);
    ans.push(0);
	while(fo==b[0]&&ao<=10)
	{
		sum=ao+1;
		for(int i=1;i<=t-1;i++)
		    for(int j=1;j<=check(fo,a[i]);j++)	
			{
			    q.push(bian(fo,a[j],b[j],j-1));
			    ans.push(sum);
			}
		q.pop();
		ans.pop();
	}
	if(ao>10||ao==0)cout<<"NO ANSWER!";
	else cout<<ao; 
	return 0;
} 
2021/8/17 16:00
加载中...