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

インデックスC/C ++の範囲内で最大値を取得するようにバイナリ文字列を配置しますか?


0と1のみで構成される特定の文字列の場合、交差しない範囲A、B(A <=B)、より具体的には[A1、B1]、[A2、B2]、…、[AM、 BM]、これらの間隔のいずれか2つは重複しません—正式には、i!=jとなる各有効なi、jの場合、Aiのいずれかです。

アクティビティは、次の2つの条件を同時に保持する合法または有効な順列を見つけることです-

  • 指定されたM個の範囲すべての数値の合計が最大になります。

  • 文字列は辞書式順序で最大になります。文字列1100は、辞書式順序で文字列1001よりも高くなっています。

Input
11100
3
3 4
5 5
Output
00111
First we put 1’s in position 3 and 4 then in 5 as there are no 1’s left, the string formed is 00111.
Input
0000111
2
1 1
1 2
Output
1110000

上記の例では、最初に1を1番目と2番目の位置に配置し、次に別の「1」を残します。

したがって、これを使用して文字列を辞書式順序で最大化し、3番目の位置に配置して、再配置が完了します。


  1. C++の連結バイナリ文字列の最大連続ゼロ

    長さnのバイナリ文字列があるとします。kが与えられたという別の値があります。バイナリ文字列をk回連結する必要があります。次に、連結された文字列内の連続する0の最大数を見つける必要があります。バイナリ文字列が「0010010」であり、k =2であるとすると、文字列をk回連結した後、「00100100010010」になります。したがって、連続する0の最大数は3です。 アプローチは簡単です。数値がすべて0の場合、答えはn*kになります。文字列に1が含まれている場合、結果は、すべて0を含む文字列のサブ文字列の最大長、または0のみを含む文字列の最大プレフィックスの長さとの最大サフィックスの長さの合計に

  2. C /C++で文字列を反転します

    これはC言語で文字列を逆にする例です 例 #include<stdio.h> #include<string.h> int main() {    char s[50], t;    int i = 0, j = 0;    printf("\nEnter the string to reverse :");    gets(s);    j = strlen(s) - 1;    while (i < j) { &n