C ++

 Computer >> コンピューター >  >> プログラミング >> C ++
  1. C++で指定された3つのソートされた配列から最も近い3つの要素を検索します

    max(| A [i] – B [i] |、| B [j] – Cのように、3つのソートされた配列A、B、Cと、それぞれA、B、Cからの3つの要素i、j、kがあるとします。 [k] |、| C [k] – A [i] |)が最小化されます。したがって、A =[1、4、10]、B =[2、15、20]、およびC =[10、12]の場合、出力要素は10、15、10、これら3つはA、B、およびCからのものです。 A、B、Cのサイズがそれぞれp、q、rであるとします。次に、次の手順に従ってこれを解決します- i:=0、j:=0およびk:=0 ここで、i

  2. C++でa+b =c + dとなるような配列で、4つの要素a、b、c、dを見つけます。

    整数のリストがあるとします。私たちのタスクは、a + b =c + dとなるように、(a、b)と(c、d)のような2つのペアとして4つの異なる整数を見つけることです。複数の回答がある場合は、1つだけ印刷してください。配列要素が次のようであると仮定します:A =[7、5、9、3、6、4、2]の場合、ペアは(7、3)と(6、4)になります ここでは、ハッシュ手法を使用します。合計をキーとして使用し、ペアとしてハッシュテーブルの値として使用します。この問題を解決するには、次の手順に従う必要があります。 0からn– 1の範囲のiについては、 i +1からn– 1の範囲のjの場合、do 合計を見

  3. C ++でO(n)時間未満で、制限された範囲の配列内の各要素の頻度を見つけます

    整数の配列があるとします。配列はAで、サイズはnです。私たちのタスクは、O(n)時間未満の配列内のすべての要素の頻度を見つけることです。要素のサイズは、Mなどの1つ未満の値である必要があります。ここでは、二分探索アプローチを使用します。ここでは、終了要素が異なる場合、配列を2つの部分に再帰的に分割します。両方の終了要素が同じである場合、配列内のすべての要素が、配列が既にソートされているのと同じであることを意味します。 例 #include<iostream> #include<vector> using namespace std; void calculateFreq

  4. gcd(a ^ n、c)を見つけます。ここで、a、n、cはC++で1から10^9まで変化します。

    2つの数値のGCDを見つける必要があります。そのうちの1つの数値は(109 ^ 109)まで大きくなる可能性があり、longなどの一部のデータ型には格納できません。したがって、数値がa =10248585、n =1000000、b =12564の場合、GCD(a ^ n、b)の結果は9になります。 数値が非常に長いため、ユークリッドの互除法を使用することはできません。 O(log n)の複雑さのべき乗剰余を使用する必要があります。 例 #include<iostream> #include<algorithm> using namespace std; long lo

  5. 配列にC++で1つの不一致がある文字列が含まれているかどうかを確認します

    文字列sと、文字列Aの別の配列があるとします。配列に、現在の長さの異なる文字列と1文字の違いがある文字列が含まれているかどうかを確認する必要があります。文字列が「banana」のようで、配列が[「bana」、「orange」、「banaba」、「banapy」]のようになっているとすると、文字列banabaが1つあるため、結果はtrueになります。ここでは1文字だけです。バナナとは異なります。 この問題を解決するために、いくつかの手順に従います- 指定された文字列をトラバースし、配列内のすべての文字列を確認してから、arr-内のすべての文字列に対して次の手順に従います。 arrの

  6. C++で式の括弧が重複しているかどうかを確認します

    式expがあると考えてください。そして、expの周りに括弧のセットが重複していないかどうかを確認する必要があります。 1つの部分式が複数の括弧セットで囲まれている場合、式の括弧は重複します。たとえば、式が-のような場合 (5+((7−3))) ここで、部分式(7 – 3)は2つの括弧のペアで囲まれているため、これらは重複した括弧です。 この問題を解決するために、スタックを使用します。 exp内の各文字を繰り返し処理し、文字が開き括弧(、または演算子またはオペランドのいずれかである場合は、それをスタックにプッシュします。文字が閉じ括弧である場合は、スタックから文字を繰り返しポップ

  7. 指定された数がC++に無限のシーケンスで存在するかどうかを確認します

    3つの整数a、b、cがあるとします。無限のシーケンスで、aが最初の項であり、cが一般的な違いであると仮定します。 bがシーケンスに存在するかどうかを確認する必要があります。値がa=1、b =7、c =3のようであるとすると、シーケンスは1、4、7、10、…になり、シーケンスに7が存在するため、出力は「yes」になります。 この問題を解決するには、次の2つの手順に従う必要があります- c =0、a =bの場合、yesを出力し、aがbと同じでない場合、noを返します 0の場合、負でない整数kの場合、方程式はb =a + k*cを満たす必要があります。したがって、(b-a)/cは非負の

  8. C++で1つの文字列が他の文字列に出現するすべてのインデックスを検索します

    文字列strと別の部分文字列sub_strがあるとすると、str内のsub_strのすべての出現のインデックスを見つける必要があります。 strが「aabbababaabbbabbaaabba」で、sub_strが「abb」であるとすると、インデックスは1 91318になります。 この問題を解決するために、C ++ STLでsubstr()関数を使用できます。この関数は、チェックを開始する場所から初期位置を取得し、部分文字列の長さがsub_strと同じである場合は、その位置を返します。 例 #include<iostream> using namespace std; void

  9. C++ですべての間隔の交差を検索

    {L、R}の形式でN個の間隔があり、Lが開始時刻、Rが終了時刻であるとします。すべての区間の交点を見つける必要があります。交点は、指定されたすべての区間内にある区間です。そのようなものが見つからない場合は、-1を返します。たとえば、間隔が[{1、6}、{2、8}、{3、10}、{5、8}の場合、出力間隔は{5、6} この問題を解決するために、次の手順に従います- 最初の間隔が最後の間隔であると考えてください 2番目の間隔から始めて、交差点を検索してみてください。 2つのケースが存在する可能性があります [L1、R1]と[L2、R2]の間に交差は存在せず、R1

  10. 2の累乗であり、C++で合計Nを持つk個の数値を見つけます

    NとKの2つの数値があるとします。タスクは、2の累乗で合計がNであるKの数値を出力することです。それが不可能な場合は、-1を返します。 。 N=9およびK=4とすると、出力は4 2 2 1になり、その合計は9で、要素の数は4であり、それぞれが2の累乗です。 この問題を解決するには、次の手順に従う必要があります- kがNのセットビット数よりも小さいか、Nよりも大きい場合は、-1を返します。 設定されたビットで2の累乗を優先キューに追加します K個の要素を取得するまで優先キューを開始してから、その要素を優先キューから削除します 削除した要素/2を優先キューに再度2回挿入し

  11. C++でa+b + c=dとなるような配列で最大のdを見つけます

    整数のセットがあるとします。数「d」を見つける必要があります。ここで、d =a + b + cであり、最大化(a + b + c)する必要があり、すべてのa、b、c、およびdがセットに存在します。セットには、少なくとも1つの要素、最大で1000の要素が含まれます。各要素は有限数になります。セットが{2、3、5、7、12}の場合、12が最大です。これは2+3 + 7で表すことができます この問題を解決するために、ハッシュ手法を使用できます。 (a + b)のすべてのペアの合計をハッシュテーブルに格納し、次にすべてのペア(c、d)をトラバースし、検索(d-c)がテーブルに存在するかどうかを確認し

  12. C++の配列番号の積の最後のk桁を検索します

    Aと呼ばれるn個の要素の配列があるとします。別の数kがあります。私たちのタスクは、配列Aの要素の積の最後のk桁を見つけることです。A=[15、22、13、19、17]とすると、積は1385670、最後のk=3桁は670です。 この問題を解決するために、10 kを法とする数値を乗算します。 。 例 #include<iostream> #include<cmath> using namespace std; int displayLastKNumbers(int array[], int n, int k) {    int mod = (int)

  13. C++で効率的に数値のビットを反転するプログラム

    このチュートリアルでは、数値のビットを効率的に反転するプログラムについて説明します。 このために、非負の数が与えられます。私たちのタスクは、数値を2進形式に変換し、数値の2進ビットを反転することです。そして最後に、数値に相当する10進数を出力します。 例 #include <bits/stdc++.h> using namespace std; //inverting bits of number int invert_bit(int n){    int x = log2(n) ;    int m = 1 << x; &nb

  14. C ++でリンクリストの長さ(反復および再帰)を検索

    ここでは、反復的かつ再帰的なアプローチを使用して、リンクリストの長さを見つける方法を説明します。ヘッドポインタが指定されている場合は、次の手順に従って長さを取得する必要があります。 反復アプローチの場合- リストの先頭を取り、現在のポインタがnullでなくなるまで、次のノードに移動してカウントを増やします。 再帰的アプローチの場合- 引数としてheadを渡します。基本条件は、引数がnullの場合、0を返します。それ以外の場合は、再帰的にリストに入り、現在のノードから次のノードを送信し、1+サブリストの長さを返します 例 #include<iostream&g

  15. C++で配列のヒストグラムを作成するプログラム

    このチュートリアルでは、配列内に与えられたデータによってヒストグラムを作成するプログラムについて説明します。 このために、配列内に整数値が提供されます。私たちのタスクは、座標xとyの両方の値が配列で提供された値と等しくなるようにヒストグラムをプロットすることです。 例 #include <bits/stdc++.h> using namespace std; void make_histogram(int arr[], int n){    int maxEle = *max_element(arr, arr + n);    for (i

  16. C ++で1回フリップすると、バイナリ表現で1の最長シーケンスを検索します

    整数nが1つあるとします。その中で、1ビットフリップを作成して、1の最長シーケンスを生成できます。数値が13であるとすると、2進表現は1101になります。make0から1として1ビットフリップを行うと、1111になります。これは1の最長シーケンスです この問題を解決するために、与えられた数のビットをウォークスルーします。現在の1のシーケンス長と前の1のシーケンス長を追跡します。ゼロが見つかったら、前の長さを更新します。したがって、次のビットが1の場合、前の長さを現在の長さに設定する必要があります。次の値が0の場合は、前の値を再び0にします。 例 #include<iostream>

  17. C++のバイナリツリーで最大レベルの製品を検索します

    1つの二分木が与えられたと仮定します。正と負のノードがあります。各レベルで最大の製品を見つける必要があります。 これがツリーであると考えると、レベル0の積は4、レベル1の積は2 * -5 =-10、レベル2の積は-1 * 3 * -2 * 6=36です。最大1つ。 これを解決するために、ツリーのレベル順トラバーサルを実行します。トラバーサル中に、異なるレベルのノードを個別に実行するプロセスを実行します。次に、最大の製品を入手します。 例 #include<iostream> #include<queue> using namespace std; class

  18. C++で2つの行列を乗算するプログラム

    このチュートリアルでは、2つの行列を乗算するプログラムについて説明します。 このために、2つの行列が与えられ、私たちのタスクは、これら2つの行列の積を出力することです。唯一の条件は、最初の行列の列数が2番目の行列の行数と等しくなければならないということです。 例 #include <iostream> using namespace std; #define N 4 //multiplying the elements of both matrices void calc_product(int mat1[][N], int mat2[][N], int res[][N]){ &

  19. C++でN以下の数値の中から桁の最大積を求めます

    0があるとします。タスクは、N以下の数値の中から数字の最大積を見つけることです。Nが390の場合、結果は次のようになります。 216、数389が最大の積3 * 8 * 9=216を作成しているため。 この問題を解決するために、再帰的アプローチを使用します。したがって、N =0の場合は1を返し、数値N <10の場合はNを返し、それ以外の場合はmax(max_product(N / 10)*(N mod 10)、max_product((N / 10)-1)*9を返します。 ) 例 #include<iostream> using namespace std; int max_pro

  20. C++で1からnまでの数字パターンを使用して「N」アルファベットを印刷するプログラム

    このチュートリアルでは、1からnまでの数字のパターンを使用して「N」のアルファベットを印刷するプログラムについて説明します。 このためには、英語のアルファベットNを印刷する必要があります。私たちのタスクは、文字のサイズを決定し、1からnまでの数字を使用してそれを印刷し直すことです。 例 #include <iostream> using namespace std; //printing the letter N void print_N(int N){    int index, side_index, size;    int Righ

Total 5992 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:104/300  20-コンピューター/Page Goto:1 98 99 100 101 102 103 104 105 106 107 108 109 110