#include <iostream>#include <queue>using namespace std; const int maxl = 20000000; class Map { struct item { string key; int value; } d[maxl]; int cnt; public: int find(string x) { for (int i = 0; i < cnt; ++i) if (d[i].key == x) return d[i].value; return -1; } static int end() { return -1; } void insert(string k, int v) { d[cnt].key = k; d[cnt++].value = v; }} s[2]; class Queue { string q[maxl]; int head, tail; public: void pop() { ++head; } string front() { return q[head + 1]; } bool empty() { return head == tail; } void push(string x) { q[++tail] = x; }} q[2]; string st0, st1;int m; string LtoR(string s, int L, int R) { string t = s; char tmp = t[L]; for (int i = L; i < R; ++i) t[i] = t[i + 1]; t[R] = tmp; return t;} string RtoL(string s, int L, int R) { string t = s; char tmp = t[R]; for (int i = R; i > L; --i) t[i] = t[i - 1]; t[L] = tmp; return t;} bool check(string st , int p, int step) { if (s[p].find(st) != s[p].end()) return false; ++step; if (s[p ^ 1].find(st) == s[p].end()) { s[p].insert(st, step); q[p].push(st); return false; } cout << s[p ^ 1].find(st) + step << endl; return true;} int main() { cin >> st0 >> st1; int len = st0.length(); if (len != st1.length()) { cout << -1 << endl; return 0; } if (st0 == st1) { cout << 0 << endl; return 0; } cin >> m; s[0].insert(st0, 0); s[1].insert(st1, 0); q[0].push(st0); q[1].push(st1); for (int p = 0; !(q[0].empty() && q[1].empty()); p ^= 1) { string st = q[p].front(); q[p].pop(); int step = s[p].find(st); if ((p == 0 && (check(LtoR(st, m, len - 1), p, step) || check(RtoL(st, 0, m), p, step))) || (p == 1 && (check(LtoR(st, 0, m), p, step) || check(RtoL(st, m, len - 1), p, step)))) return 0; } cout << -1 << endl; return 0;} 输出可能为 。( )
若输入的两个字符串长度均为 时,则 时的输出与 时的输出是一样的。( )
若两个字符串的长度均为 ,则最坏情况下,此程序的时间复杂度为 。( )
(2.5 分)若输入的第一个字符串长度由 个不同的字符构成,第二个字符串是第一个字符串的倒序,输入的 为 ,则输出为( )。
(4 分)己知当输入为 0123\n3210\n1 时输出为 ,当输入为 012345\n543210\n1 时输出为 ,当输入为 01234567\n76543210\n1 时输出为 ,则当输入为0123456789ab\nba9876543210\nl 输出为
( )。其中 \n 为换行符。
(4 分)若两个字符串的长度均为 ,且 ,且两个字符串的构成相同(即任何一个字符在两个字符串中出现的次数均相同),则下列说法正确的是( )。提示:考虑输入与输出有多少对字符前后顺序不一样。