C ++

 Computer >> コンピューター >  >> プログラミング >> C ++
  1. C++で2つの文字列を同一にするための最小コスト

    2つの文字列AとBがあり、CostAとCostBのような別の2つのコスト値があるとします。 AとBを同一にするための最小コストを見つける必要があります。文字列から文字を削除できます。文字列Aから削除するためのコストはCostAであり、文字列Bから削除するためのコストはCostBです。文字列からすべての文字を削除するコストは同じです。文字列A=“ wxyz”、B =“ wyzx”、CostAが10、CostBが20であると仮定します。したがって、出力は30になります。両方の文字列からxを削除すると、AとBは同じになります。したがって、コストは10 + 20=30です。 これは最長共通部分列問題

  2. C++の2つのリストの共通要素の最小インデックス合計

    2人が異なる都市を選択したいとします。彼らは異なるリストに都市をリストしました。私たちは、一般的な選択肢を見つけるために支援する必要があります。したがって、これらの都市を見つける必要があります。それらは両方でマークされています。 この操作はsetintersectionプロパティと非常によく似ています。2つのリストをsetとして取得し、setintersectionを実行して共通要素を取得します。 例 #include <iostream> #include <vector> #include <algorithm> using namespace std

  3. C++の中間点を使用して長方形の角を見つける

    長方形ABCDがあると仮定しますが、中点PとQの座標、および長方形Lの長さしかありません。 私たちのタスクは、PとQの座標、および辺Lの長さを使用して、A、B、C、およびDの座標を見つけることです。たとえば、Pが(1、0)、Qが(1、2)の場合、およびLが2の場合、A、B、C、Dはそれぞれ(0、0)、(0、2)、(2、2)になります。 (2、0)。 発生する可能性のあるケースは3つあります。 長方形は水平であるため、ADとBCはX軸に平行です 長方形は垂直であるため、ADとBCはY軸に平行です 長方形は軸に対して特定の角度で傾斜しています。 3番目のケースでは、PとQの座標を使

  4. C++で単一値のサブツリーの数を検索する

    二分木があるとします。私たちのタスクは、指定されたツリー内の単一値のサブツリーをカウントすることです。単一値のサブツリーはサブツリーであり、そのツリーのすべてのノードに同じ値が含まれています。木が以下のようなものだとしましょう- 4つの単一値サブツリーがあります。これらは以下のようなものです- これはボトムアップ方式で解決できます。訪問したすべてのサブツリーについて、その下にルートされたサブツリーが単一値の場合はtrueを返し、カウンターを1増やします。ここで、countは再帰呼び出しの参照パラメーターです。そして、戻り値を使用して、左右のサブツリーが単一値であるかどうかを確認

  5. C++の配列で最大GCDのペアを検索します

    正の整数の配列があるとします。私たちのタスクは、GCD値が最大である配列から整数のペアを見つけることです。 A ={1、2、3、4、5}とすると、出力は2になります。ペア(2、4)にはGCD 2があり、他のGCD値は2未満です。 この問題を解決するために、各要素の除数の数を格納するためのカウント配列を維持します。除数を数えるプロセスには、O(sqrt(arr [i]))の時間がかかります。全体をトラバースした後、最後のインデックスから最初のインデックスまでカウント配列をトラバースできます。要素が1より大きい値が見つかった場合、これは2つの要素の約数であり、最大GCDでもあることを意味します。

  6. C++で指定されたインデックスを持つNフィボナッチ数のGCDを検索します

    ここでは、指定されたインデックスを持つn個のフィボナッチ項のGCDを見つける必要があります。したがって、最初に最大インデックスを取得し、フィボナッチ項を生成する必要があります。いくつかのフィボナッチ項は次のようになります:0、1、1、2、3、5、8、13、21、34、…..インデックスは開始です0から。したがって、0 thの要素 インデックスは0です。インデックス{2、3、4、5}でフィボナッチ項のgcdを見つける必要がある場合、項は{1、2、3、4}であるため、これらの数値のGCDは1です。 このタスクを実行するために、1つの興味深いアプローチを使用します。 GCD(Fibo(i)、Fi

  7. C++のRotatedSorted配列でRotationCountを検索します

    回転してソートされた配列である配列があるとします。配列をソートするために必要な回転数を見つける必要があります。 (右から左への回転を検討します。) 配列が{15、17、1、2、6、11}のようであるとすると、配列を2回回転させて並べ替える必要があります。最終的な注文は{1、2、6、11、15、17}になります。ここでの出力は2です。 ロジックは単純です。気づいたら、回転数が最小要素のインデックスの値と同じであることがわかります。したがって、最小の要素を取得すると、そのインデックスが結果になります。 例 #include <iostream> using namespace st

  8. C++の範囲で非推移的な互いに素なトリプレットを見つける

    下限と上限があり、ペア(x、y)が互いに素(GCDは1)、ペア(y、z)が互いに素であるような非遷移トリプレット(x、y、z)を見つける必要があるとします。 、ただし、ペア(x、z)は互いに素のペアではありません。たとえば、下限が2で、上限が10の場合、要素は{2、3、4、5、6、7、8、9、10}です。ここで可能なトリプレットは(4、7、8 )、ここでは(4、7)、および(7、8)は互いに素ですが、(4、8)は互いに素のペアではありません。 これを解決するために、ナイーブなアプローチに従います。範囲の下限と上限で可能なすべてのトリプレットを生成し、基準に一致させます。 例 #include

  9. C ++でGCDを使用せずに、3つ以上(または配列)の数値のLCMを検索する

    配列Aがあり、GCD操作を使用せずにすべての要素のLCMを見つける必要があります。配列が{4、6、12、24、30}のような場合、LCMは120になります。 LCMは、2つの数値について簡単に計算できます。 LCMを取得するには、このアルゴリズムに従う必要があります。 getLCM(a、b) − begin    if a > b, then m := a, otherwise m := b       while true do          if m is divisibl

  10. C++のBSTからの床と天井

    ここでは、BSTから床と天井の値を見つける方法を説明します。たとえば、空きノードがBSTに配置されているメモリ管理システムを作成する場合です。入力リクエストに最適なものを見つけます。キー値よりも大きい最小のデータでツリーを下に移動するとします。3つのケースが考えられます。 ルートが鍵です。その場合、ルート値は上限値です ルートデータ<キーの場合、上限値は左側のサブツリーにないため、右側のサブツリーに進み、問題のあるドメインを減らします キーの場合、上限値は右側のサブツリーにある可能性があり、左側のサブツリーにキーよりも大きいデータを持つノードが見つかる可能性があります。そのような要素が存在し

  11. C++で他のすべてと互いに素である配列要素を確認します

    正の整数の配列A[]があるとします。ここで、2 <=A [i]<=106です。iのすべての可能な値に対して。タスクは、少なくとも配列内の要素に、配列の他のすべての要素と互いに素のペアを形成する要素が存在するかどうかを確認することです。配列{2、8、4、10、6、7}について考えてみます。ここで、7は配列内の他のすべての要素と互いに素です。 この問題を解決するための効率的なアプローチは、指定された配列内の整数のすべての素因数を生成する必要があることです。要素に他の要素との共通の素因数が含まれていない場合、他の要素と互いに素のペアを常に形成します。 例 #include <iostream

  12. C++の式でバランスの取れた括弧を確認します

    式があるとします。式にはいくつかの括弧があります。括弧のバランスが取れているかどうかを確認する必要があります。括弧の順序は()、{}、[]です。 2つの文字列があるとします。 「()[(){()}]」これは有効ですが、「{[}]」は無効です。 タスクは簡単です。これを行うには、スタックを使用します。解決策を得るには、次の手順に従う必要があります- 式がなくなるまで式をトラバースします 現在の文字が(、{または[のように角かっこを開いている場合は、スタックにプッシュします 現在の文字が)、}、]のように閉じ括弧である場合は、スタックからポップし、ポップされたブラケットが現在の文字の対応する開

  13. C++のバイナリツリーで子の合計プロパティを確認します

    二分木があるとします。二分木は、次の特性を満たす場合に有効です。 各ノードには、左右の子の値の合計と同じデータ値が含まれている必要があります。いずれかの側に子がない場合は、0として扱われます。 以下のように、指定されたプロパティを満たすツリーが存在するとします。 これをチェックするそのようなトリックはありません。ノードとその子の両方がプロパティを満たしている場合はツリーを再帰的にトラバースする必要があり、それ以外の場合はfalseを返します。 例 #include <iostream> using namespace std; class node {  

  14. C++でツリーを構築せずに同一のBSTを確認する

    BSTの要素を表す2つの配列があります。その配列から要素を左から右に取得してBSTを形成する場合、両方の配列から取得することで、同じBSTを作成します。両方が同じように形成されているかどうかを確認する必要があります。しかし、制約は、BSTを作成できないことです。 2つの配列が{2、4、1、3}と{2、1、4、3}であるとすると、これらのシーケンスは両方とも同じBSTを形成できます。 アプローチは簡単です。ご存知のように、左側のサブツリーの要素はルートよりも小さく、右側のサブツリーの要素はルートよりも大きくなっています。これらの2つのリストは、各要素xについて、xの左右のサブツリーの要素

  15. C++でソートされた配列の多数決要素を確認します

    7/2と表示されます。 配列内のxの出現を数えることができ、その数がn / 2より大きい場合、答えはtrueになり、そうでない場合はfalseになります。 例 #include <iostream> #include <stack> using namespace std; bool isMajorityElement(int arr[], int n, int x){    int freq = 0;    for(int i = 0; i<n; i++){       if(arr[i]

  16. C++でのすべての文字置換クエリの後に回文を確認します

    セットQに文字列といくつかのクエリがあるとします。各クエリには整数iとjのペアが含まれています。および別のキャラクターc。インデックスiとjの文字を新しい文字cに置き換える必要があります。そして、文字列が回文であるかどうかを教えてください。文字列が「AXCDCMP」のようなものであるとすると、(1、5、B)のような1つのクエリを使用すると、文字列は「ABCDCBP」になり、次に(0、6、A)のような別のクエリになり、「ABCDCBA」になります。 」、これは回文です。 インデックスi、jを使用して1つのクエリを作成し、文字列のインデックスi、jにある文字をcに置き換える必要があります。 例

  17. C++の2Dマトリックスで可能なパスを確認します

    2D配列があると考えてください。左上隅から右下隅へのパスを取得できるかどうかを確認する必要があります。マトリックスは0と1で埋められます。 0はオープ​​ンエリアを示し、1は閉塞を示します。左上隅は常に1になることに注意してください。 行列が次のようなものであると仮定します- 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1つのパスは緑色でマークされ、他のパスもいくつかあります。したがって、パスがある場合、プロ

  18. 与えられた行列が魔方陣であるかどうかをC++で確認してください

    ここでは、行列が魔方陣であるかどうかに関係なく、魔方陣は正方行列であり、各行、各列、および各対角線の合計が同じであることがわかります。 行列が次のようなものであると仮定します- 6 1 8 7 5 3 2 9 4 これは魔方陣です。ご覧のとおり、各行、列、対角線の合計は15です。 行列が魔方陣であるかどうかを確認するには、主対角和と二次対角和が同じである場合は魔方陣であり、そうでない場合はそうではありません。 例 #include <iostream> #define N 3 using namespace std; b

  19. サイズnの指定された配列がnレベルのBSTを表すことができるかどうかをC++で確認してください

    配列Aがあり、配列がnレベルのBSTを表すことができるかどうかを確認する必要があります。レベルがであるため、次のようにツリーを構築できます。数値をkとすると、kより大きい値は右側に移動し、kより小さい値は左側に移動します。 {50、20、9、25、10}と{50、30、20、25、10}の2つのリストがあるとします。 最初のものは無効ですが、2番目のものは有効です。 これを確認するには、BSTを作成して高さを確認するか、配列ベースのアプローチを使用します。アレイベースのアプローチは以下のようなものです- 2つの変数max=infinityを使用して、左側のサブツリーの最大制限をマー

  20. 数値がC++で指定されたベースにあるかどうかを確認します

    数の文字列があるとすると、その数が指定された基数Bのものであるかどうかを確認する必要がありますか?文字列が「101110」、b =2の場合、プログラムはtrueを返します。文字列が「A8F」、ベースが16の場合、それは真になります。 アプローチは非常に簡単です。すべての文字が指定されたベースの記号の範囲内にある場合はtrueを返し、そうでない場合はfalseを返します。 例 #include <iostream> using namespace std; bool inGivenBase(string s, int base) {    if (base &g

Total 5992 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:81/300  20-コンピューター/Page Goto:1 75 76 77 78 79 80 81 82 83 84 85 86 87