File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
Dynamic_Programming/2052.Minimum-Cost-to-Separate-Sentence-Into-Rows Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int minimumCost (string sentence, int k)
4
+ {
5
+ vector<int >nums;
6
+ for (int i=0 ; i<sentence.size (); i++)
7
+ {
8
+ int j = i;
9
+ while (j<sentence.size () && isalpha (sentence[j]))
10
+ j++;
11
+ nums.push_back (j-i);
12
+ i = j;
13
+ }
14
+
15
+ int n = nums.size ();
16
+ nums.insert (nums.begin (), 0 );
17
+
18
+ int ret = INT_MAX/2 ;
19
+ vector<int >dp (n+1 , INT_MAX/2 );
20
+ dp[0 ] = 0 ;
21
+ for (int i=1 ; i<=n; i++)
22
+ {
23
+ int len = -1 ;
24
+ int j = i;
25
+ while (j>=1 && len+nums[j]+1 <= k)
26
+ {
27
+ len += nums[j]+1 ;
28
+ dp[i] = min (dp[i], dp[j-1 ]+(k-len)*(k-len));
29
+
30
+ if (i==n) ret = min (ret, dp[j-1 ]);
31
+ j--;
32
+ }
33
+ }
34
+
35
+ return ret;
36
+ }
37
+ };
You can’t perform that action at this time.
0 commit comments