C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の数値にk個のブレークポイントを設定した後の最大セグメント値


この問題では、大きな数を示す文字列が与えられ、整数のkroarはブレークポイントの数を示します。私たちのタスクは、数値に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

  1. 最大ベンド数のC++パス長

    二分木が与えられる問題を解決するため。次に、曲がりの数が最大のパスを見つける必要があります。つまり、パスの方向が左から右に、またはその逆に変化する場合、たとえば、曲がりが考慮されます 入力- 出力- 6 このアプローチでは、ツリーをトラバースして、以前の動きを追跡します。方向が変わった場合は、曲げカウントを更新するだけで、最大値が見つかります。 解決策を見つけるためのアプローチ このアプローチでは、すべてのパスをトラバースし、回答を更新するベンドの最大数を見つけます。 例 #include <bits/stdc++.h> using namespace std; s

  2. C++でNセグメントを使用して7セグメントディスプレイに表示できる最大数

    与えられたタスクは、7セグメントディスプレイのant番号でNセグメントを使用して表示できる最大数を見つけることです。 例を使用して、私たちがしなければならないことを理解しましょう- 入力 − n =5 出力 − 71 説明 −最大数は7セグメントディスプレイに次のように表示されます- 入力 − n =6 出力 − 111 以下のプログラムで使用されるアプローチは次のとおりです 次の状況は3つのケースに分けることができます- ケース1 − Nが0または1の場合、数値を表示することはできません。 ケース2 − Nが奇数の場合。その場合、奇数