有没有佬能解答一下呀? 一直报错MLE,不知道哪里错了
#include <iostream>
#include <string>
#include <bitset>
using namespace std;
int main() {
int n, m;
string binary;
cin >> n;
string* str = new string[n + 1];
str[0] = "";
for (int i = 1; i <= n; i++) {
cin >> str[i];
}
cin >> m;
string* newstr = new string[n + m + 1];
newstr[0] = "";
for (int i = 0; i <= n; i++) {
newstr[i] = str[i];
}
delete[] str;
for (int i = 1; i <= m; i++) {
int a, b, k = 0;
bool flag = 0;//记录是否有子串
cin >> a >> b;
int pos = n + i;
newstr[pos] = newstr[a] + newstr[b];
if (newstr[pos].find("0") == string::npos || newstr[pos].find("1") == string::npos) {
cout << 0 << endl;
continue;
}
while (true) {
k++;
for (int j = 0; j < (1 << k); j++) {
binary = bitset<32>(j).to_string().substr(32 - k);
if (newstr[pos].find(binary) != string::npos) {
continue;
}
else {
flag = 1;
break;
}
}
if (flag) {
cout << k - 1 << endl;
break;
}
}
}
return 0;
}