DFS TLE#2#4#5 求调
查看原帖
DFS TLE#2#4#5 求调
562575
WangTianJiao楼主2024/8/25 22:12
#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cassert>
#include <cmath>
#include <ctime>
using namespace std;
typedef long long ll;
typedef double db;

struct rule
{
	string a, b;
}lst[10];
string sa, sb;
const int maxdepth = 10;
int cnt = 1;
int ans = 100;
void dfs(int dep)
{
	if (dep >= maxdepth)
		return;
	if (sa == sb)
	{
		ans = min(ans, dep);
		return;
	}
	for (int i = 1; i <= cnt; ++i)
	{
		int pos = sa.find(lst[i].a);
		string s = sa;
		while (pos != sa.npos)
		{
			
			sa.replace(pos, lst[i].a.length(), lst[i].b);
			pos = sa.find(lst[i].a);
		}
		dfs(dep + 1);
		sa = s;
	}
}
int main()
{
	cin >> sa >> sb;
	while ((cin >> lst[cnt].a >> lst[cnt].b))
	{
		++cnt;
	}
	--cnt;
	//printf("cnt=%d\n", cnt);
	dfs(0);
	if (ans == 100)
		printf("NO ANSWER!\n");
	else
		printf("%d\n", ans);
	return 0;
}
2024/8/25 22:12
加载中...