设为首页 加入收藏

TOP

[LeetCode]Scramble String
2014-11-23 21:38:21 来源: 作者: 【 】 浏览:8
Tags:LeetCode Scramble String
class Solution {  
//O(n^4) DP with some cut off can pass the large judge  
//O(n^2) recursion with some cut off can also pass the large judge   
public:  
    bool isScramble(string s1, string s2) {  
        // Start typing your C/C++ solution below  
        // DO NOT write int main() function  
        if(s1.size() != s2.size()) return false;  
        int n = s1.size();  
        if(n == 0) return true;  
        vector > > f(n, vector >(n, vector(n+1, false)));  
        //initialize  
        for(int i = 0; i < n; ++i)  
        {  
            for(int j = 0; j < n; ++j)  
            {  
                if(s1[i] == s2[j]) f[i][j][1] = true;  
            }  
        }  
        //dp  
        for(int len = 2; len <= n; ++len)  
        {  
            for(int i = 0; i < n; ++i)  
            {  
                if(i+len-1 >= n) break;  
                for(int j = 0; j < n; ++j)  
                {  
                    if(j+len-1 >= n) break;  
                    for(int k = 1; k < len; ++k)  
                    {  
                        if(i+k < n && j+k < n) f[i][j][len] = f[i][j][len] || (f[i][j][k] && f[i+k][j+k][len-k]);  
                        if(j+len-k < n && i+k < n) f[i][j][len] = f[i][j][len] || (f[i][j+len-k][k] && f[i+k][j][len-k]);  
                        if(f[i][j][len] == true) break;  
                    }  
                }  
            }  
        }  
        return f[0][0][n];  
    }  
};  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU1069:Monkey and Banana(DP+贪.. 下一篇poj 3176 Cow Bowling (DP)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)
·使用华为开发者空间 (2025-12-27 04:19:24)
·Getting Started wit (2025-12-27 03:49:24)
·Ubuntu 上最好用的中 (2025-12-27 03:49:20)