Number of Sets of K Non-Overlapping Line Segments LeetCode solution in C++
1class Solution {2public:3int mod = 1e9 + 7;4int dp[1011][1011][3];5int f(int i, int k, int n, int ended) {6if (k == 0) return 1;7if (i == n) return 0;8if (dp[i][k][ended] != -1) return dp[i][k][ended];9int ans = 0;10if (ended)11ans = (ans + f(i + 1, k, n, 0) + f(i + 1, k, n, 1)) % mod;12else13ans = (ans + f(i + 1, k, n, 0) + f(i, k - 1, n, 1)) % mod;14return dp[i][k][ended] = ans;15}16int numberOfSets(int n, int k) {17memset(dp, -1, sizeof(dp));18return f(0, k, n, 1);19}20};