Skip to content

Commit 92ae8bc

Browse files
authored
Update 1977.Number-of-Ways-to-Separate-Numbers.cpp
1 parent 60b1845 commit 92ae8bc

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

Dynamic_Programming/1977.Number-of-Ways-to-Separate-Numbers/1977.Number-of-Ways-to-Separate-Numbers.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,36 +26,32 @@ class Solution {
2626
else
2727
lcs[i][j] = 0;
2828
}
29-
30-
accum[0][1] = 1;
31-
32-
for (int i=1; i<n; i++)
33-
{
29+
30+
for (int i=0; i<n; i++)
3431
for (int len=1; len<=i+1; len++)
3532
{
3633
int j = i-len+1;
3734
int dp = 0;
3835

3936
if (num[j]=='0')
40-
dp = 0;
37+
dp = 0;
4138
else if (len==i+1)
4239
dp = 1;
4340
else
4441
{
45-
int k = max(0, j-len);
42+
int maxLen2 = min(len, j);
4643

47-
if (len==j-k && lcs[k][j]<len && num[k+lcs[k][j]]>num[j+lcs[k][j]])
48-
k++;
49-
while (k<=j-1 && num[k]=='0')
50-
k++;
44+
if (len==maxLen2 && lcs[j-maxLen2][j]<len && num[j-maxLen2+lcs[j-maxLen2][j]]>num[j+lcs[j-maxLen2][j]])
45+
maxLen2--;
46+
while (maxLen2>=1 && num[j-maxLen2]=='0')
47+
maxLen2--;
5148

52-
if (k<=j-1)
53-
dp = accum[j-1][j-k];
49+
if (maxLen2>=1)
50+
dp = accum[j-1][maxLen2];
5451
}
5552

5653
accum[i][len] = (accum[i][len-1] + dp) % M;
57-
}
58-
}
54+
}
5955

6056
return accum[n-1][n];
6157
}

0 commit comments

Comments
 (0)