4
int f(int i, int k, string &s, vector<int> &dp) {5
if (i == s.size()) return 1; // empty string6
if (dp[i] != -1) return dp[i]; // Memoization step7
if (s[i] == '0') return 0; // leading zeroes10
for (int j = i; j < s.size(); j++) {11
num = num * 10 + s[j] - '0';13
ans += f(j + 1, k, s, dp); // create num and call for next index16
return dp[i] = ans; // storing answer18
int numberOfArrays(string s, int k) {20
vector<int> dp(n + 1, -1);21
return f(0, k, s, dp);22
// dp[i]=total ways to23
// create possible arrays starting at index i