在C ++中将k个断点放入数字后的最大段值

在此问题中,我们给了一个字符串,该字符串表示一个大数字,整数k roar表示断点的数量。我们的任务是创建一个程序,该程序在将L个断点放入数字后将找到最大的段值。

在这里,我们必须找到在将k个断点放入字符串给定的数字之后可以生成的最大数字。

让我们以一个例子来了解问题

输入-字符串=“ 45972”,k = 3

输出-97

说明-

All possible number is:
45    9    7    2
4    59    7    2
4    5    97    2
4    5    9    72
From all 97 is the largest number.

为了解决这个问题,我们将使用滑动窗口。在此,窗口大小将等于(字符串的长度-k),即该大小的最大数目。我们将使用滑动窗口技术检查给定大小的所有可能数字中的最大数字。

示例

在将K个断点放入数字后查找最大分段值的程序-

#include <bits/stdc++.h>
using namespace std;
int findMaxSegmentWithKbreaks(string &s, int k) {
   int window = s.length() - k;
   int MaxNumber = 0;
   for (int i=0; i<window; i++)
   MaxNumber = MaxNumber * 10 + (s[i] - '0');
   int slWindow = pow(10, window-1);
   int value = MaxNumber;
   for (int i = 1; i <= (s.length() - window); i++) {
      value = value - (s[i-1]- '0')*slWindow;
      value = value*10 + (s[i+window-1]- '0');
      MaxNumber = max(MaxNumber, value);
   }
   return MaxNumber;
}
int main() {
   string s = "45972";
   int k = 3;
   cout<<"Maximum segment value after putting "<<k<<" break points in a number = "<<findMaxSegmentWithKbreaks(s, k);
   return 0;
}

输出结果

Maximum segment value after putting 3 breakpoints in a number = 97