题目
样例
这道题好像并不用搜索,其实就是一个模拟题,题目给的数据也不大,模拟也不会超时,并且stl是个好东西啊,在模拟的时候用stl来写这道题真的可以节省很多的时间。
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <string.h>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
int main()
{
int n, c, t = 0, cut, i;
scanf("%d", &n);
while (n--)
{
scanf("%d", &c);
t++;
cut = 0;
char s1[110], s2[110], s12[220], s[220];
scanf("%s%s%s", s1, s2, s12);
map <string, int > mp;
int len, flat = 0;
while (1)
{
cut++;
len = 0;
for (i = 0; i < c; i++)
{
s[len] = s2[i];
len++;
s[len] = s1[i];
len++;
}
s[len] = '\0';
if (strcmp(s, s12) == 0)
{
flat = 1;
break;
}
if (mp.find(s) != mp.end())
{
break;
}
mp[s] = 0;
for (i = 0; i < c; i++)
{
s1[i] = s[i];
s2[i] = s[i + c];
}
}
if (flat)
{
printf("%d %d\n", t, cut);
}
else
{
printf("%d -1\n", t);
}
}
return 0;
}