在 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
廣告