[C++] : using DP + suffix-sum
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity: O(n)\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity: O(n)\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\npublic:\n\n    bool isPossibleToJumpForward(vector<int>& sfsum, int i, int j, int n)\n    {\n        if(i > n - 1) return 0; //V.V.IMP : TC : "00111010" 3 5\n        \n        int sum = (j != n - 1) ? sfsum[i] - sfsum[j + 1] : sfsum[i];\n        return (sum > 0);\n    }\n\n    bool canReach(string s, int minJump, int maxJump) \n    {\n        int n = s.length(); if(s[n - 1] != \'0\') return 0;\n\n        bool dp[n]; memset(&dp, 0x00, sizeof(dp));\n        vector<int> sfsum(n, 0);\n\n        dp[n - 1] = 1;\n        sfsum[n - 1] = 1;\n        \n        for(int i = n - 2; i >= 0; i--)\n        {\n            dp[i] = (s[i] == \'1\') ? 0 : isPossibleToJumpForward(sfsum, i + minJump, min(i + maxJump, n - 1), n);\n\n            sfsum[i] = sfsum[i + 1] + dp[i];\n        }\n\n        return dp[0];\n    }\n};\n```
['Dynamic Programming', 'Prefix Sum', 'C++']