Longest Binary Subsequence Less Than or Equal to K LeetCode solution in C++
1class Solution {2public:3int ans = 0;4int f(int i, int size, int sum, string &s, vector<vector<int>> &dp) {5if (i < 0) {6return 0;7}8if (dp[i][size] != -1) {9return dp[i][size];10}11int no = f(i - 1, size, sum, s, dp);12int yes = 0;13if ((sum - (s[i] - '0') * pow(2, size)) >= 0) {14yes = 1 + f(i - 1, size + 1, (sum - (s[i] - '0') * pow(2, size)), s, dp);15}16return dp[i][size] = max(no, yes);17}18int longestSubsequence(string s, int k) {19int n = s.size();20vector<vector<int>> dp(n, vector<int>(n, -1));21return f(n - 1, 0, k, s, dp);22}23};