初学萌新求助!WA两个点!

P1032 [NOIP2002 提高组] 字串变换

@[弑魂丶琉璃花P](/user/203102) 我感觉写的不错,这测评机为难人啊QWQ
by Diamiko @ 2020-04-16 09:33:34


@[弑魂丶琉璃花P](/user/203102) 初学红名
by _Sakura_Tears_ @ 2020-04-16 09:38:27


@[_Sakura_Tears_](/user/334968) ~~不是我的号,行了吧~~
by Diamiko @ 2020-04-16 09:39:48


@[弑魂丶琉璃花P](/user/203102) 拿弱一点的号问问题更容易被接受
by _Sakura_Tears_ @ 2020-04-16 09:41:08


比如说我这个号qwq
by _Sakura_Tears_ @ 2020-04-16 09:41:37


@[弑魂丶琉璃花P](/user/203102) 建议下载数据与复制题解对拍
by _Sakura_Tears_ @ 2020-04-16 09:42:34


@[_Sakura_Tears_](/user/334968) 好吧……
by Diamiko @ 2020-04-16 09:49:25


思路貌似差不太多 ```cpp #include<iostream> #include<cstring> #include<queue> #include<map> using namespace std; map<string, int> mp; int main() { string a, b, x[10], y[10]; int n = 1; cin >> a >> b; while (cin >> x[n] >> y[n]) { n++; } n--; queue<string> Q; queue<int> s; Q.push(a); s.push(0); while (!Q.empty()) { if (Q.front() == b) { cout << s.front(); return 0; } if (s.front() >= 10) { Q.pop(); s.pop(); } string t = Q.front(); if (mp.count(t)) { Q.pop(); s.pop(); continue; } mp[t] = 1; for (int i = 1; i <= n; i++) { int p = 0; while (t.find(x[i], p) != -1) { p = t.find(x[i], p); Q.push(t.substr(0, p) + y[i] + t.substr(p + x[i].length())); s.push(s.front() + 1); p++; } } Q.pop(); s.pop(); } cout << "NO ANSWER!"; return 0; } ```
by 蒟___ @ 2020-04-16 10:06:34


|