在 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