Skip to content

Commit f4225fa

Browse files
authored
Create 2052.Minimum-Cost-to-Separate-Sentence-Into-Rows.cpp
1 parent fe801dc commit f4225fa

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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+
};

0 commit comments

Comments
 (0)