Mọi người cho em hỏi bài này với ạ (nó gọi là lặp lại tandem). Em đã code xong đc phần kiểm tra xâu lặp vào số lần lặp liên tiếp của nó. Nhưng em bị mắc chỗ khai báo chiều dài của xâu và xử lý chỗ M dòng xâu con không biết làm thế nào. Mong mọi người giúp em với ạ.
#include<iostream>
#include<string>
using namespace std;
bool strcmpr(string str1, string str2){
int i, j, m, n;
m = str1.length();
n = str2.length();
for(i = 0; i < m;){
for(j = 0; j < n;)
{
if(str1[i] != str2[j])
return false;
else{
i ++;
j ++;
}
}
}
return true;
}
int tandem(int m, int n, string str){
m = m - 1;
n = n - m;
int count = 0;
string str1 = str.substr(m, n);
for(int i = m; i < str.length(); i += n){
string str2 = str.substr(i, n);
if(strcmpr(str1, str2) == 1)
count ++;
else
break;
}
cout << count;
}
int main(){
int b;
cin >> b;
string str;
getline(cin, str);
int i, j, m, n, x;
for(x = 0; x < b; x++){
cin >> m >> n;
tandem(m, n, str);
}
}