示例#1
0
	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;
	}
示例#2
0
 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;
 }