-
特定の円がC++の2つの同心円によって形成されるリングの内側に完全にあるかどうかを確認します
rです。別のサークルも存在します。その半径(r1)と中心点が与えられているので、その点が最初の2つの円によって形成されるリングの内側にあるかどうかを確認する必要があります。 =rおよび(distance – r1)<=Rの場合、両方がtrueの場合、円はリングの内側にあります。 例 #include <iostream> #include <cmath> using namespace std; bool isInside(int r, int R, int r1, int x, int y) { int dis = sqrt(x*x+
-
指定された文字列がC++の合計文字列であるかどうかを確認します
ここでは、文字列が合計文字列であるかどうかを確認する方法を説明します。右端の部分文字列がその前の2つの部分文字列の合計として記述できる場合、その文字列は合計文字列と呼ばれ、その前の部分文字列についても同じことが再帰的に当てはまります。 12243660のような文字列が12+24 =36のような合計文字列であり、36が文字列の12と24の後に存在し、再び24 + 36 =60であるとすると、これも文字列に存在します。 文字列Sは、この規則に従っている場合、合計文字列と呼ぶことができます- 𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔(𝑖、𝑥)+𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔(𝑥+ 1、�
-
特定のツリーグラフが線形であるかどうかをC++で確認します
ここでは、ツリーグラフが線形であるかどうかを確認する方法を説明します。線形ツリーグラフは1行で表すことができます。これが線形ツリーグラフの例であると仮定します。 しかし、これは線形ではありません- グラフが線形であるかどうかを確認するには、2つの条件に従うことができます ノードの数が1の場合、ツリーグラフは線形です ノードの(n – 2)が次数2の場合 例 #include <iostream> #include <vector> #define N 4 using namespace std; class Graph{ p
-
グラフが強く接続されているかどうかを確認します-C++でセット1(DFSを使用するKosaraju)
グラフがあるとします。 Kosarajuアルゴリズムを使用して、グラフが強く接続されているかどうかを確認する必要があります。グラフは強く接続されていると言われ、2つの頂点の間にパスがある場合、グラフは接続されます。無向グラフは強く結びついたグラフです。 一部の無向グラフは接続されている可能性がありますが、強く接続されていない可能性があります。これは、強く接続されたグラフの例です。 これは、接続されているが強く接続されていないグラフの例です。 ここでは、コサラジュアルゴリズムの次の手順を使用して、グラフが強く関連しているかどうかを確認する方法を説明します。 手順 −
-
C++で線が円に接触または交差するかどうかを確認します
円と別の直線があるとします。私たちの仕事は、線が円に接しているか交差しているかを見つけることです。そうでない場合は、線が外側を通過します。したがって、以下のような3つの異なるケースがあります- ここでは、次の手順で解決します。これらは以下のようなものです- 中心と与えられた線の間の垂線Pを見つけます Pを半径r−と比較します rの場合、外部 P =rの場合、タッチします それ以外の場合は内部 垂直距離を取得するには、次の式を使用する必要があります(中心点は(h、k)) $$ \ frac {ah + bk + c} {\ sqrt {a ^ 2 + b ^ 2}} $$
-
マトリックスがC++で反転可能かどうかを確認します
ここでは、行列が可逆であるかどうかを確認する方法を説明します。 1つの行列がMの場合、逆行列M-1は-になります。 $$ M ^ -1 =\ frac {adj(M)} {| M \ lvert} $$ したがって、Mの行列式がゼロ以外の場合は、逆数を取得できるのは私たちだけです。そうでない場合は、逆数を取得できません。したがって、ここでは、行列式がゼロ以外であるかどうかを確認する必要があります。行列式を見つけることは、再帰的なプロセスの1つです。部分行列を見つけ、その行列式を見つけ、その結果を最終的な計算に使用する必要があります。より良いアイデアを得るためにコードを見てみましょう。 例
-
C ++で数値のxorがゼロより大きくなるように、すべての行の数値を選択できるかどうかを確認します。
サイズNxMの2D配列が1つあるとします。タスクは、これらの要素のXORがゼロ以外または0より大きいように、すべての行から数値を選択できるかどうかを確認することです。1つの行列がこのように- 7 7 7 10 10 7 XORを実行すると、2つの行の最後の要素が7と10である場合を除いて、答えはゼロ以外になります。 この問題を解決するための解決策は非常に簡単です。最初に、各行の最初の列の要素のXORが0であるかどうかを確認します。ゼロ以外の場合は可能です。それ以外の場合は、いずれかの行に2つ以上の異なる要素があるかどうかを確認します。ある場合は、それ
-
バイナリ文字列にC++で長さkのすべての順列が含まれているかどうかを確認します
バイナリ文字列、別の整数kがあるとします。文字列にkビットのバイナリのすべての順列が含まれていることを確認する必要があります。文字列が「11001」のようなものであり、K =2の場合、kビット数のすべての順列が必要であるとします。 (00、01、10、11)、指定された文字列にはすべての順列があります。したがって、これは有効な文字列です。 バイナリ文字列とkの値を取得することにより、バイナリシーケンスが一致するかどうかを確認する必要があります。バイナリシーケンスはサイズkで構成されています。したがって、2k個の異なるバイナリ順列があります。 k長のバイナリ値のすべての順列を文字列としてリスト
-
バイナリツリー(BSTではない)の値がC++で重複していないかどうかを確認します
二分木があると考えてください。この二分木はBSTではありません。二分木に同じ要素が複数回含まれているかどうかを確認する必要があります。これを解決するために、ハッシュを使用します。指定されたツリーをトラバースし、ノードごとに、ノードがテーブルに存在するかどうかを確認します。存在する場合はfalseを返し、存在しない場合はtrueを返します。 例 #include <iostream> #include <unordered_set> using namespace std; class Node { public: in
-
バイナリツリーに、C++でサイズ2以上の重複するサブツリーが含まれていないかどうかを確認します
二分木があると考えてください。ツリーにサイズ2以上の重複するサブツリーがあるかどうかを確認する必要があります。以下のような二分木があるとします- サイズ2の2つの同一のサブツリーがあります。ツリーのシリアル化とハッシュプロセスを使用して、この問題を解決できます。アイデアは、サブツリーを文字列としてシリアル化し、ハッシュテーブルに格納することです。リーフではなく、ハッシュテーブルにすでに存在するシリアル化されたツリーを見つけたら、trueを返します。 例 #include <iostream> #include <unordered_set> using name
-
バイナリツリーがC++でレベルごとにソートされているかどうかを確認します
ここでは、二分木がレベルごとにソートされているかどうかを確認する方法を説明します。レベルごとにソートされた二分木は次のようになります- 各レベルでは、ノードは左から右に並べ替えられ、各レイヤーには前のレベルよりも高い値が含まれています。 レベル順序トラバーサルを実行することでこの問題を解決し、現在のレベルの最小要素と最大要素を追跡できます。別の変数prev_maxを使用して、前のレベルの最大値を保持します。次に、現在のレベルの最小値と前のレベルの最大値prev_maxを比較します。 min値がprev_maxより大きい場合、ツリーは現在のレベルまでレベルごとに並べ替えられます。次に、
-
C++の文字列でセルに複数回アクセスできるかどうかを確認します
ドット(。)と数字の付いた文字列があるとします。ドットはセルが空であることを示し、セルに数字xがある場合は、文字列内でxステップ右または左に移動できることを示します。私たちの仕事は、セルを複数回訪問できるかどうかを確認することです。たとえば、文字列が「。 2。 。 。 2。 。」とすると、2つの異なる方法で4番目のセルにアクセスできます。 2番目のセルから右に2ステップ、またはセル6から左に2ステップ。 ストリングのi番目のセルにアクセスできる回数を追跡するために、visited[]という1つの配列を使用します。次に、文字列をトラバースし、現在の文字がドットか数字かを確認します。ドットの場合
-
特定の配列がC++での二分探索木のプレオーダートラバーサルを表すことができるかどうかを確認します
配列に要素のリストがあるとすると、要素が二分探索木のプレオーダートラバーサルになり得るかどうかを確認する必要があります。シーケンスが{40、30、35、80、100}のようであるとすると、ツリーは-のようになります。 スタックを使用してこれを解決できます。この問題を解決するには、次の手順に従う必要があります。 空のスタックを定義する ルートを負の無限大として設定 プレオーダーシーケンスのすべての要素について、次のようにします- 要素が現在のルートよりも小さい場合は、falseを返します 要素がスタックトップよりも大きい間はスタックから要素を削除し続け、最後に削除された要素をルートにし
-
特定の行列がC++でハンケルであるかどうかを確認します
正方行列があるとすると、その行列がハンケル行列であるかどうかを確認することがタスクです。ハンケル行列は正方行列であり、左から右への各昇順スキュー対角要素は一定です。行列が次のようなものであると仮定します- 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 行列がハンケル行列であるかどうかを確認するには、mat [i、j] =a i + jであるかどうかを確認する必要があります。 か否か。 a i + j -とし
-
特定の携帯電話番号がC++で派手かどうかを確認します
私たちは10桁の携帯電話番号を持っています、私たちの仕事はその番号が派手な番号であるかどうかをチェックすることです。ファンシーナンバーには3つの異なる条件があります。少なくとも1つが真である場合、その数は空想的です。これらの条件は以下のようなものです- 555のように、1つの数字が3回連続して発生します 3つの連続する数字は、123や321のように昇順または降順のいずれかです。 8965499259のように、1桁の数字が4回以上出現します。ここでは、9回が4回出現しています。 ファンシーナンバーの一例は9859009976で、これは3番目の条件が満たすファンシーナンバーです。 数
-
与えられた数が与えられた番号で表現できるかどうかを確認してください。 C++の任意の基数の桁数
数nと桁数dがあるとします。数値nが2から32までの任意の基数でd桁の数値として表現できるかどうかを確認する必要があります。数値nが8で、d =4であるとすると、これは2進数で1000として表現できます。ここで、dは4です。 。 アイデアは、2から32まですべてのベースを1つずつチェックすることです。ベースをチェックするためにこれらの手順に従うことができます。 数値が基数より小さく、桁が1の場合、trueを返します 桁が1を超え、数値が基数を超える場合は、num / baseを実行して数値から最後の桁を削除し、桁数を減らしてから、これを繰り返し繰り返し実行します。 それ以外の場合はfals
-
与えられた数がC++でその桁の階乗の合計を除算するかどうかを確認します
整数があるとすると、その数がその桁の階乗の合計を除算するかどうかを調べる必要があります。数値が19で、桁の階乗の合計が(1!+ 9!)=362881であるとすると、これは19で割り切れます。 これを解決するために、数値を取得し、各桁の階乗を計算して合計を加算します。合計が数値自体で割り切れる場合はtrueを返し、そうでない場合はfalseを返します。 例 #include <iostream> using namespace std; int factorial(int n){ if(n == 1 || n == 0) &nb
-
指定された番号がC++でPronicであるかどうかを確認します
ここでは、番号が方形数であるかどうかを確認する方法を説明します。長方形を形成するように配置できる数は、方形数と呼ばれます。最初のいくつかの方形数は、0、2、6、12、20、30、42、56、72、90、110、132、156、182、210、240、272、306、342です。 2つの連続する整数。したがって、方形数n =x *(x + 1)。 ここでは、いくつかの方形数を確認して生成します。 例 #include <iostream> #include <cmath> using namespace std; bool isPronicNumber(int num)
-
C++で多数を等しい合計の2つ以上のセグメントに分割できるかどうかを確認します
ここでは、数値を同じ合計で複数のセグメントに分割できるかどうかを確認できるプログラムを確認します。数値が74325のようなものであるとすると、これは3つの部分(7)、(4、3)、(2、5)に分割でき、すべて同じum値になります。 この問題を解決するには、次の手順に従う必要があります。 数字を文字列として取ります 配列を使用して、配列のプレフィックス合計を保持します これで、2番目の要素から最後の要素に移動し、最初のセグメントは0からi-1になり、その合計はprefix_sum[i-1]に配置されます 1からnまでトラバースする別の変数を使用してから、合計を加算し続けます。 合計値がいずれ
-
C++で多数が13で割り切れるかどうかを確認します
ここでは、数値が13で割り切れるかどうかを確認する方法を説明します。この場合、その数は非常に多い数です。したがって、数値を文字列として入力します。 数値が次の状況を満たしている場合、数値は13で割り切れます- 交互の合計が得られる場合にのみ、数値は13で割り切れます。つまり、右から左への3つの数値のブロックの加算と減算が、13で割り切れます。たとえば、2911285は、交互の合計が13で割り切れます。サイズ3のブロックは2– 911 + 285 =-650で、13で割り切れます。 数値が13で割り切れるのは、最後の桁に4を掛けたものを足し算して数が13で割り切れる場合のみです。たとえば、2