MLE怎么办?
查看原帖
MLE怎么办?
959329
jiajikai楼主2024/3/27 20:13
#include <bits/stdc++.h>

using namespace std;
//unordered_map<string, bool> pd;
queue<string> aa,bb,cc;
int la = 1, ss, lla = 1;

int main() {
	string a, b, a1[7], b1[7], cr;
	int ca, cb, ca1[7], cb1[7], zs = 0, ls;
	cin >> a >> b;
//	pd[a] = true;
	aa.push(a);
	ca = a.length();
	cb = b.length();
	while (cin >> a1[zs] >> b1[zs]) {
		ca1[zs] = a1[zs].length();
		cb1[zs] = b1[zs].length();
		if (ca1[zs] == 1) {
			ca1[zs] = 0;
		}
		if (cb1[zs] == 1) {
			cb1[zs] = 0;
		}
		zs++;
	}
	for (ss = 1; ss <= 10; ss++) {
		lla = la;
		la = 0;
		bb=aa;
		aa=cc;
		while (lla) {
			lla--;
			for (int i = 0;  i < zs; i++) {
				ls = bb.front().find(a1[i]);
				while (ls != string::npos) {
					cr = bb.front();
					cr.replace(ls, ca1[i], b1[i]);
//					cout<<bb.front()<<" "<<i<<" "<<cr<<endl;
					if (cr==b) {
						cout << ss;
						return 0;
					}
//					if (!pd[cr]) {
//						pd[cr] = true;
					aa.push(cr);
					la++;
//					}
					ls = bb.front().find(a1[i], ls + 1);
				}
			}
			bb.pop();
		}
	}
	cout << "NO ANSWER!";
	return 0;
}

MLE了,不知道怎么优化。

2024/3/27 20:13
加载中...