-
サークルC++でバインドされたロボット
無限の平面があるとすると、ロボットは最初は位置(0、0)に立ち、北を向いています。ロボットは3つの命令のうちの1つを受け取ることができます- G −直進1ユニット; L −左方向に90度回転します; R −右方向に90度回転します。 ロボットは順番に指示を実行し、指示は永遠に繰り返されます。ロボットが円を離れないように、平面に円が存在するかどうかを確認する必要があります。したがって、入力が[GGLLGG]のような場合、答えはtrueになります。 (0,0)から(0,2)まで、それは永久にループするので、これは閉じたパスであり、答えは真です。 これを解決するには、次
-
C++で最長の文字列チェーン
=1の一連の単語[word_1、word_2、...、word_k]です。ここで、word_1はword_2の先行であり、word_2はword_3の先行です。与えられた単語のリストから選択された単語を使用して、単語チェーンの可能な限り長い長さを見つける必要があります。 したがって、入力が[a、 b、 ba、 bca、 bda、 bdca]の場合、最長のチェーンの1つが[ a」、「ba」、「bda」、「bdca」]。 これを解決するには、次の手順に従います- マップを定義するdp、n:=単語配列のサイズ 長さに基づいて単語配列を並べ替える ret:=0 範囲0tn
-
C++での最後の石の重みII
岩のコレクションがあり、各岩の重みが正の整数であるとします。各ターンで、2つの岩を選び、それらを一緒に粉砕します。石の重みがxとyで、x<=yの場合。このスマッシュの結果は-になります x =yの場合、両方の石が完全に破壊されます。 x!=yの場合、重さxの石は完全に破壊され、重さyの石は新しい重さy-xになります。 最後に、残っている石は多くても1つです。この石の可能な限り最小の重量を見つける必要があります(石が残っていない場合、重量は0です)。 たとえば、入力が[2,7,4,1,8,1]の場合、出力は1になります。これは、(2,4)をスマッシュすると、新しい配列が[2
-
C++で文字列を形成する最短の方法
文字列があるとすると、いくつかの文字を削除することで(おそらく削除なしで)、その文字列のサブシーケンスを形成できます。したがって、sourceとtargetの文字列が2つある場合、それらの連結がtargetと等しくなるように、sourceのサブシーケンスの最小数を見つける必要があります。タスクが不可能な場合は、-1を返します。したがって、ソースが「abc」でターゲットが「abcbc」の場合、出力は2になります。 これを解決するには、次の手順に従います- possibleという文字列を定義します。これはsとtを入力として受け取ります マップを作成するm sマークの各文字cにつ
-
C++でターゲットを満たすために丸め誤差を最小化する
価格P[p1、p2 ...、pn]の配列とターゲット値があるとすると、丸められた配列[Round1(P1)、Round2(P2)になるように、各価格PiをRoundi(Pi)に丸める必要があります。 ...、Roundn(Pn)]は、指定されたターゲット値に合計されます。ここで、各操作Roundi(pi)は、Floor(Pi)またはCeil(Pi)のいずれかになります。 丸められた配列を合計してターゲットにできない場合は、文字列「-1」を返す必要があります。それ以外の場合は、最小の丸め誤差を返します。これは、(小数点以下3桁の文字列として)-として定義されます。 $ \ displayst
-
C++のソートされた配列に欠落している要素
一意の番号のソートされた配列Aがあるとすると、配列の左端の番号から始まるK番目の欠落している番号を見つける必要があります。したがって、配列が[4,7,9,10]のようで、k =1の場合、要素は5になります。 これを解決するには、次の手順に従います- n:=配列のサイズ、low:=0およびhigh:=n – 1に設定 nums [n --1] – nums [0] + 1 – n
-
C++で辞書式順序で最小の同等の文字列
同じ長さの文字列AとBがあるとすると、A[i]とB[i]は同等の文字であると言えます。したがって、たとえば、A=abcおよびB=cdeの場合、a =c、b=dおよびc=eになります。同等の文字は、あらゆる同等関係の通常の規則に従います: 再帰性:a =a 対称性:a=bはb=aを意味します 推移性:a=bおよびb=cはa=cを意味します たとえば、上記のAとBの同等性情報を考えると、S =eed、 acd、および aabは同等の文字列であり、aabは辞書式順序で最小のSの同等の文字列です。 AとBからの同等性情報を使用した、辞書式に最小のSの同等の文字列。この方法で形
-
C++で最も長く繰り返される部分文字列
文字列Sがあるとすると、最も長く繰り返される部分文字列の長さを見つける必要があります。繰り返しの部分文字列が存在しない場合は0を返します。したがって、文字列が「abbaba」のような場合、出力は2になります。最も長く繰り返されるサブ文字列は「ab」または「ba」です。 この方法で形成できるすべての単語を辞書式順序で返します。 これを解決するには、次の手順に従います- n:=Sのサイズ セットS:=Sと連結された1つの空白スペース set ret:=0 サイズ(n + 1)x(n + 1)の1つの行列dpを作成します 1からnの範囲のiの場合 i+1から
-
C++でのブレース拡張
単語のリストを表す文字列Sがあるとします。ここで、単語の各文字には1つ以上のオプションがあります。オプションが1つしかない場合、文字はそのまま表示されます。複数のオプションがある場合は、中括弧でオプションを区切ります。したがって、たとえば、「{a、b、c}」はオプション[a、 b、c]を表します。たとえば、入力が「{a、b、c} d {e、f}」の場合、これはリスト[ade、 adf、 bde、 bdf、 cde、 cdf]。 この方法で形成できるすべての単語を辞書式順序で返します。 これを解決するには、次の手順に従います- retという配列を定義し、整数型変数nを定義します
-
C++での絶対値式の最大値
同じ長さの整数の配列が2つあるとすると、次の最大値を見つける必要があります。| arr1 [i] --arr1 [j] | + | arr2 [i]-arr2 [j] | + | i--j|。ここで、最大値はすべての0 <=i、j
-
C++での最長共通部分列
2つの文字列text1とtext2があるとすると、それらの最長共通部分列の長さを返す必要があります。文字列のubsequenceは、元の文字列から生成された新しい文字列であり、残りの文字の相対的な順序を変更せずに一部の文字が削除されています。 (たとえば、「abe」は「abcde」のサブシーケンスですが、「adc」はそうではありません)。 2つの文字列の共通のサブシーケンスは、両方の文字列に共通のサブシーケンスです。したがって、共通のサブシーケンスがない場合は0を返します。入力が「abcde」や「ace」の場合、結果は3になります。 これを解決するには、次の手順に従います- n:=sの
-
C++で最も長く繰り返される文字の部分文字列と交換する
文字列テキストがあるとすると、文字列内の2つの文字を入れ替えることができます。文字が繰り返される最長の部分文字列の長さを見つける必要があります。したがって、入力が「ababa」の場合、結果は3になります。たとえば、最初のbを最後のaに交換するか、最後のbを最初のaに交換するかのように、最も長く繰り返される文字は「aaa」になるため、長さは次のようになります。 3。 これを解決するには、次の手順に従います- マップcntを定義し、ret:=1、j:=0、n:=テキストのサイズ、v:=0を定義し、xというセットを定義し、mという別のマップを作成します。mは各文字の頻度を保持します。テキスト
-
C++のリンクリストからゼロサム連続ノードを削除する
リンクリストの先頭を指定したとします。そのようなシーケンスがなくなるまで、合計が0になるノードの連続するシーケンスを繰り返し削除する必要があります。したがって、そうした後、最終的なリンクリストの先頭を返す必要があります。したがって、リストが[1,2、-3,3,1]のような場合、結果は[3,1]になります。 これを解決するには、次の手順に従います- ダミーと呼ばれるノードを作成し、そこに0を格納し、ダミーの次を設定します:=head 1つのマップmを作成し、キー0のダミーをmに格納し、sum=0に設定します 頭がヌルではない間- sum:=sum +ヘッドの値、m [
-
C++でSTLを使用して操作をマージする| merge()、includes()、set_union()、set_intersection()、set_difference()、inplace_merge
このチュートリアルでは、C++でSTLを使用してさまざまなマージ操作を理解するためのプログラムについて説明します。 merge()関数は、新しいコンテナーもソートされるように、2つのソートされたコンテナーをマージするために使用されます。さらに、includes()を使用して、最初のコンテナの要素が2番目のコンテナに存在するかどうかを確認します。 例 #include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ vec
-
ベクトル、マップ、ペアの内容を出力するためのC++での演算子のオーバーロード..
このチュートリアルでは、ベクトル、マップ、およびペアのコンテンツを出力するためのC++での演算子のオーバーロードを理解するためのプログラムについて説明します。 演算子のオーバーロードは演算子の機能であり、ユーザー定義のオブジェクトに作用し、それに応じて同様の方法で機能することができます。 例 ベクトル #include <iostream> #include <vector> using namespace std; template <typename T> ostream& operator<<(ostream& os, c
-
C++でのコンストラクタ/デストラクタ呼び出しの順序
このチュートリアルでは、C++でのコンストラクタ/デストラクタの順序を理解するためのプログラムについて説明します。 コンストラクタ/デストラクタの順序とは、クラスの継承中にさまざまなクラスのコンストラクタが呼び出されるパターンを指します。 例 #include <iostream> using namespace std; //parent class class Parent{ public: Parent(){ cout << "Inside base clas
-
順序集合とGNUC++ PBDS
このチュートリアルでは、順序集合とGNU C++PBDSを理解するためのプログラムについて説明します。 順序集合は、STLライブラリにあるもの以外のポリシーベースの構造です。順序セットは、すべての要素を並べ替えられた順序で保持し、重複する値を許可しません。 例 #include <iostream> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #de
-
C++プログラミングの出力イテレータ
このチュートリアルでは、C++の出力イテレータを理解するためのプログラムについて説明します。 出力イテレータは、主要な5つのイテレータの一部です。これらは入力イテレータとは逆に機能し、値を割り当てることはできますが、値をフェッチするためにアクセスすることはできません。 例 #include<iostream> #include<vector> using namespace std; int main(){ vector<int>v1 = {1, 2, 3, 4, 5}; //declaring iter
-
C++プログラミングでキーワードをオーバーライドする
このチュートリアルでは、C++のoverrideキーワードを理解するためのプログラムについて説明します。 Overrideキーワードは、基本クラスの関数をオーバーライドし、子クラスの同じシグネチャを持つ別の関数を定義するために使用されます。 例 #include <iostream> using namespace std; class Base { public: //function to be override virtual void func() {
-
C ++標準テンプレートライブラリ(STL)でペアリング
このチュートリアルでは、C++標準テンプレートライブラリのペアを理解するためのプログラムについて説明します。 ペアは、2つの値を含むユーティリティヘッダーで定義されたコンテナです。 2つの値を組み合わせて、タイプが異なっていてもそれらを関連付けるために使用されます。 例 #include <iostream> #include <utility> using namespace std; int main(){ //initializing a pair pair <int, char> PAIR1 ;