在 C++ 中,在数字中插入 k 个断点后最大段的值
在这个问题中,我们得到一个表示大数的字符串和一个整数 k,它表示断点的数量。我们的任务是编写一个程序,找到在数字中插入 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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP