bool isScrambleRe(sit s1, sit s2, int len){ if(!hasSameLetters(s1, s2, len))return false; if(len==0 || len==1)return true; for(int i=1;i<len;i++){ if(isScrambleRe(s1, s2, i)&&isScrambleRe(s1+i, s2+i, len-i) || isScrambleRe(s1, s2+len-i, i)&&isScrambleRe(s1+i, s2, len-i)) return true; } return false; }
bool isScrambleSub(string& s1, int k1, int L1, string& s2, int k2) { if(!hasSameLetters(s1, k1, L1, s2, k2)) return false; if(L1 == 0 || L1 == 1) return true; for(int i = 1; i < L1; ++i) { if(isScrambleSub(s1, k1, i, s2, k2) && isScrambleSub(s1, k1+i, L1-i, s2, k2+i) || isScrambleSub(s1, k1, i, s2, k2+L1-i) && isScrambleSub(s1, k1+i, L1-i, s2, k2) ) return true; } return false; }