C ++

 Computer >> コンピューター >  >> プログラミング >> C ++
  1. C++で指定されたN個の範囲のすべての要素をカバーする範囲を検索します

    LとRを含むn個の範囲があるとします。他のすべてのn– 1範囲をカバーする範囲に基づいて、0のインデックスをチェックまたは見つける必要があります。そのような範囲がない場合は、-1を表示します。たとえば、L =[2、4、3、1]、R =[4、6、7、9]の場合、出力は3になります。つまり、3番目のインデックス(1〜9)の範囲がすべてをカバーすることを意味します。他のn–1の範囲の要素。 すべてのLポイントとRポイントが異なるため、最小のLポイントと最大のRポイントの範囲を見つけます。両方が同じ範囲である場合は、他のすべての範囲がその範囲内にあることを示します。それ以外の場合は不可能です。 例

  2. C++で特定の式のすべての可能な結果を​​検索します

    括弧なしの算術式があるとします。私たちの仕事は、その表現のすべての可能な結果を​​見つけることです。式が1+2 * 3-4のようであるとすると、これは次のように解釈できます- 1+(2 *(3-4))=1 +(2 * -1)=-1 (1 + 2)*(3-4)=3 * -1 =-3 1 +((2 * 3)-4)=1 +(6-4)=3 ((1 + 2)* 3)-4 =(3 * 3)-4 =5 1+(2 * 3)-4 =1 + 6 – 4 =3 この問題を解決するには、次の手順に従う必要があります- 最初にresを空に設定します すべての演算子xについて、次のように

  3. C++で与えられた販売価格と利益または損失のパーセンテージから原価を見つけます

    販売価格があり、利益または損失のパーセンテージが示されていると考えてください。製品の原価を見つけなければなりません。式は次のようになります- $$コスト\:価格=\frac{販売価格*100}{100 +パーセンテージ\:利益} $$ $$コスト\:価格=\frac{販売価格*100}{100 +パーセンテージ\:損失} $$ 例 #include<iostream> using namespace std; float priceWhenProfit(int sellPrice, int profit) {    return (sellPrice *

  4. C ++で重複しているソートされた配列で等しい(または中間の)ポイントを検索する

    n個の要素を持つ1つのソートされた配列があるとします。配列がソートされます。小さい要素の数が大きい要素の数と同じである配列に要素が存在するかどうかを確認する必要があります。等しい点が配列に複数回出現する場合は、最初に出現したインデックスを返します。そのようなポイントが存在しない場合は、-1を返します。要素がA=[1、1、2、3、3、3、3、3]のようであるとすると、等しい点はインデックス2にあり、要素はA [2]=2です。要素が1で、1つだけ大きい要素、つまり3です。 すべての個別の要素を格納するために、1つの補助配列を作成します。個別の要素の数が偶数の場合、等しい点を見つけることができませ

  5. C++の2つの二分木で最初の一致しない葉を見つけます

    2つの二分木があるとします。一致しない2本の木の最初の葉を見つける必要があります。一致しない葉がない場合は、何も表示しません。 これらが2つのツリーである場合、最初の一致しない葉は11と15です。 ここでは、スタックを使用して、両方のツリーの反復プレオーダートラバーサルを同時に使用します。ツリーごとに異なるスタックを使用します。トップノードがリーフノードになるまで、ノードをスタックにプッシュします。 2つのトップを比較し、同じ場合はさらにチェックし、そうでない場合は2つのスタックトップ要素を表示します。 例 #include <iostream> #include <

  6. C++で指定された遷移を介して最後に到達することが可能かどうかを確認します

    x軸上にn個のポイントがあり、ポイント間の許可された平行移動のリストがあるとします。これらのトランザクションのみを介して、開始点から終了に到達できるかどうかを確認します。したがって、点x1とx2の間に平行移動がある場合は、点xからx1とx2の間の任意の中間点に移動するか、直接x2に移動できます。したがって、n =5の場合、トランザクションは0から2、2から4、および3から5になります。その場合、出力はYESになります。 0→2→3→5からのパスがあります。 ペアの最初の要素に従ってリストを並べ替える必要があります。次に、リストの2番目のペアから開始し、ペアの最初の要素が前のペアの2番目の要素

  7. C ++のバイナリ配列で1の最長の連続シーケンスを取得するには、インデックス0を1に置き換えます。

    N個の要素の配列があるとします。これらの要素は0または1のいずれかです。1に置き換えられる0の位置を見つけて、1の最長の連続シーケンスを取得します。配列がarr=[1、1、0、0、1、0、1、1、1、0、1、1、1]のようであるとすると、出力インデックスは9です。インデックス9で0を1に置き換えると、 1の最大連続シーケンス 3つのインデックスを追跡する必要があります。現在のインデックス(curr)、前のゼロインデックス(pz)、および前のゼロインデックス(ppz)。次に、配列要素が0のときに配列をトラバースし、currとppzの差を計算します。差がmaxより大きい場合は、最大値を更新し、最

  8. C++で指定された数以下の最大の特殊素数を検索します

    数nがあるとします。 N以下の最大の特別な素数を見つける必要があります。特別な素数は数字であり、数字を次々に配置することで作成できるため、結果の数字はすべて素数になります。 ここでは、エラトステネスのふるいを使用します。数nまでのふるい配列を作成します。次に、数が素数であるかどうかを確認することにより、数Nから繰り返し開始します。これが素数の場合、これが特別な素数であるかどうかを確認します。 例 #include<iostream> using namespace std; bool isSpecialPrime(bool sieve[], int num) {   &

  9. C++で別の文字列の部分文字列である1つの文字列の最長部分列の長さを検索します

    2つの文字列XとYがあり、文字列Xの最長部分列の長さを見つける必要があるとします。これは、シーケンスYの部分文字列です。したがって、X =“ ABCD”およびY =“ BACDBDCD”の場合、出力は3になります。 。「ACD」はXの最長のサブシーケンスであり、Yのサブストリングです。 ここでは、動的計画法を使用してこの問題を解決します。したがって、Xの長さがnで、Yの長さがmの場合、次数(m + 1)x(n + 1)のDP配列を作成します。 DP [i、j]の値は、X [0…j]のサブシーケンスの最大長であり、Y[0…i]のサブストリングです。これで、DPの各セルについて、次のようになりま

  10. C++での2つの文字列の比較

    ここでは、C++で2つの文字列を比較する方法を説明します。 C++には文字列クラスがあります。また、文字列を比較するための標準ライブラリのcompare()関数もあります。この関数は、文字列文字を1つずつチェックし、不一致がある場合は、ゼロ以外の値を返します。より良いアイデアを得るためにコードを見てみましょう。 例 #include<iostream> using namespace std; void compareStrings(string s1, string s2) {    int compare = s1.compare(s2);   &

  11. C++で指定された開始文字からの最長の連続パスの長さを検索します

    異なる文字のマトリックスが与えられます。 1つの文字から始めて、現在の文字よりも大きいすべての文字をトラバースすることにより、最長のパスを見つける必要があります。文字は互いに連続しています。 Eから始まります。 最長のパスを見つけるために、深さ優先探索アルゴリズムを使用します。 DFS中に、いくつかのサブ問題が複数回発生する場合があります。そのサブ問題の計算を何度も回避するために、動的計画法のアプローチを使用します。 例 #include<iostream> #define ROW 3 #define COL 3 using namespace std; // tool

  12. 競技プログラミングの初心者のためのいくつかの便利なC++トリック

    ここでは、さまざまな分野で役立つC++プログラミング言語の優れたトリックをいくつか紹介します。競技プログラミングイベントに参加したい場合のように、これらのトリックはコードを書く時間を短縮するのに役立ちます。これらの例を1つずつ見ていきましょう。 %演算子を使用せずに、数値が奇数か偶数かを確認します。このトリックは簡単です。数値と1を使用してビット単位のAND演算を実行できます。結果がゼロ以外の場合、これは奇数です。それ以外の場合、これは偶数です。ロジックが単純すぎます。すべての奇数はLSbで1になります。したがって、ANDを1で実行すると、LSbを除くすべての文字がマスクされるため、目的の結

  13. C++プログラミングの複素数

    このセクションでは、C++で複素数を作成して使用する方法を説明します。 C ++で複素数クラスを作成できます。これは、複素数の実数部と虚数部をメンバー要素として保持できます。このクラスを処理するために使用されるいくつかのメンバー関数があります。 この例では、1つの複素数型クラス、つまり複素数を正しい形式で表示する関数を作成しています。 2つの複素数を加算および減算する2つの追加メソッドなど。 例 #include<iostream> using namespace std; class complex{    int real, img;   &nb

  14. C ++でO(1)時間とO(1)余分なスペースでスタックの最大値を見つけます

    スタックに最大の要素を格納できるスタックを作成するとします。そして、O(1)時間でそれを得ることができます。制約は、O(1)の余分なスペースを使用する必要があるということです。 最大値を格納するユーザー定義スタックを1つ作成できます。ポップやピークなど、1つの操作が実行されると、最大値が返されます。ピーク操作の場合は、スタックトップの最大値と最大要素を返します。ポップ操作の場合は、トップ要素が大きい場合はそれを出力し、maxを2 * max –top_elementとして更新します。それ以外の場合はtop_elementを返します。プッシュ操作の場合、最大要素をx(挿入するデータ)、2 *

  15. C ++標準テンプレートライブラリ(STL)で並べ替え

    ここでは、C ++ STLのsort()関数を使用して配列を並べ替える方法を説明します。したがって、配列がA =[52、14、85、63、99、54、21]の場合、出力は[14 21 52 54 638599]。ソートするには、ヘッダーファイルにあるsort()関数を使用します。コードは以下のようになります- 例 #include <iostream> #include <algorithm> using namespace std; int main() {    int arr[] = {52, 14, 85, 63, 99, 54, 21};

  16. C++で絶対差が1以下になるような要素の最大数を見つけます

    n個の要素の配列があるとします。配列から選択する要素の最大数を見つけて、選択した要素の任意の2つの間の絶対差が1以下になるようにする必要があります。したがって、配列が[2、2、3、4、 5]の場合、要素は3になるため、最大カウントのシーケンスは2、2、3になります。 0と1の絶対差は、数値がx型とx + 1型である可能性があることを意味します。したがって、配列要素の頻度を格納するという考え方です。したがって、2つの連続する要素の最大合計が見つかった場合、それが解決策になります。 例 #include <iostream> #include <map> using na

  17. C ++プログラミングで独自の代入演算子を作成する必要があるのはいつですか?

    ここでは、C++で独自の代入演算子を作成する必要がある場合を確認します。クラスにポインターがない場合は、代入演算子とコピーコンストラクターを作成する必要はありません。 C ++コンパイラは、クラスごとにコピーコンストラクタと代入演算子を作成します。演算子が十分でない場合は、独自の代入演算子を作成する必要があります。 例 #include<iostream> using namespace std; class MyClass { //no user defined assignment operator or copy constructor is present   &

  18. C++で特定の数の数字を使用して形成できる最大数を見つけます

    n桁の数字があるとします。その数のすべての桁を使用して取得できる最大数を見つける必要があります。したがって、番号が339625の場合、最大数は965332になります。 この問題から、数字を昇順ではなく簡単に並べ替えてから印刷できることがわかります。しかし、より効率的な方法でこれを解決できます。サイズ10の配列を1つ作成して各桁の頻度を格納し、それに応じて9から0までの数値を出力できます。 例 #include <iostream> #include <string> using namespace std; int maxNumFromNum(int num) { &

  19. なぜC++は部分的にオブジェクト指向言語なのですか?

    私たちが知っているように、オブジェクト指向プログラミング言語のいくつかの基本的な機能は、継承、カプセル化、ポリモーフィズムです。これらの機能を完全にサポートする言語は、オブジェクト指向プログラミング言語として知られています。 C ++などの一部の言語は、これら3つをサポートしていますが、完全にはサポートしていないため、部分的にオブジェクト指向言語です。 C++が完全なオブジェクト指向言語として知られていない理由を見てみましょう。 C ++では、実行を開始するためにmain()関数が必要ですが、C ++では、main関数はクラス内に存在しません。したがって、C++でクラスを使用せずにコードを

  20. C++で階乗を除算する数の最大累乗を求めます

    2つの数nとfactがあるとします。事実を分割するnの最大の累乗を見つけなければなりません! (事実の階乗)。したがって、fact =5、n =2の場合、出力は3になります。つまり5! =120であり、これは2 ^ 3=8で割り切れます。 ここでは、ルジャンドルの公式を使用します。これは素数の最大の力を見つけ、それは事実を分割します!。 nのすべての素因数を見つけ、それから事実を分割するその最大の累乗を見つけます!。 したがって、ファクトが146で、n =15の場合、nの素因数は5と3です。したがって 3の場合、[146/3] + [48/3] + [16/3] + [5/3] + [1

Total 5992 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:99/300  20-コンピューター/Page Goto:1 93 94 95 96 97 98 99 100 101 102 103 104 105