-
C++での配列に関する練習用の質問
配列 は、伝染性のメモリ位置にデータを格納するデータ構造です。 配列の宣言 Declaring arrays is done by the following syntax : int 1D[] - for 1-D array int 2D[][] - for 2-D array 少ない要素数で配列を初期化すると、残りは0で初期化されます。 配列の要素のメモリアドレス 1-D array : address[i] = baseAddress + i*size 2-D array (row major) : address[i][j] = baseAddress + (i*n + j)
-
C++の二重リンクリストのランダムポインタを修正する
このチュートリアルでは、二重にリンクされたリスト内のランダムポインタを修正するプログラムについて説明します。 このために、ランダムポインターを持つ1つのノードを持つ二重リンクリストが提供されます。私たちのタスクは、ポインタが指す必要のある要素、つまりその隣の要素を修正することです。 例 #include <bits/stdc++.h> using namespace std; //node structure for doubly linked list struct node { int data; node* next; &
-
C++でn*mグリッドをペイントするコスト
このチュートリアルでは、n*mグリッドのペイントのコストを見つけるプログラムについて説明します。 このために、2つの整数nとmが提供されます。私たちのタスクは、n * mグリッドをペイントする最小コストを計算することです。セルをペイントするコストは、それに隣接するペイントされたセルの数に等しくなります。 例 #include <bits/stdc++.h> using namespace std; //calculating the minimum cost int calc_cost(int n, int m){ int cost = (n - 1)
-
C++で括弧のバランスを取るためのコスト
このチュートリアルでは、括弧のバランスを取るためのコストを見つけるためのプログラムについて説明します。 このために、一連の括弧が提供されます。私たちの仕事は、方程式の括弧の位置を1つずらしてバランスを取り、バランスが取れない場合は-1を出力することです。 例 #include <bits/stdc++.h> using namespace std; int costToBalance(string s) { if (s.length() == 0) cout << 0 << endl; &
-
C++で文字列パナグラムを作成するためのコスト
このチュートリアルでは、ストリングパナグラムを作成するコストを見つけるためのプログラムについて説明します。 このために、整数の配列が提供されます。私たちのタスクは、与えられた文字列をパナグラムに変換し、文字を追加するコストで提供される配列を使用して、それを行うためのコストを計算することです。 例 #include <bits/stdc++.h> using namespace std; //calculating the total cost of //making panagram int calc_cost(int arr[], string str) { &n
-
C++では「d」桁の正の整数を0で数えます。
このチュートリアルでは、数字が0の「d」桁の数字を見つけるプログラムについて説明します。 このために、番号「d」が提供されます。私たちのタスクは、「d」桁とその桁の1つとして0を持つ正の整数の数を数えて出力することです。 例 #include<bits/stdc++.h> using namespace std; //counting the number of 'd' digit numbers int count_num(int d) { return 9*(pow(10,d-1) - pow(9,d-1)); } int main(
-
C++でソートされたバイナリ配列の1を数えます
このチュートリアルでは、ソートされたバイナリ配列で1を見つけるプログラムについて説明します。 このために、1と0のみを含む配列が提供されます。私たちのタスクは、配列に存在する1の数を数えることです。 例 #include <bits/stdc++.h> using namespace std; //returning the count of 1 int countOnes(bool arr[], int low, int high){ if (high >= low){ int mid = low + (
-
C++のバイナリ行列で1によってブロックされているすべての0をカウントします
このチュートリアルでは、バイナリ行列で1によってブロックされている0の数を見つけるプログラムについて説明します。 このために、バイナリマトリックスが提供されます。私たちのタスクは、1によってブロックされているマトリックス内のすべての0を見つけてカウントすることです。 例 #include <iostream> using namespace std; #define Row 4 #define Col 5 int r[4] = { 0, 0, 1, -1 }; int c[4] = { 1, -1, 0, 0 }; bool isSafe(int x, int y, int M[
-
C++でkに等しい差を持つすべての異なるペアをカウントします
このチュートリアルでは、差がkに等しい個別のペアを見つけるプログラムについて説明します。 このために、整数配列と値kが提供されます。私たちのタスクは、差がkであるすべての個別のペアをカウントすることです。 例 #include<iostream> using namespace std; int count_diffK(int arr[], int n, int k) { int count = 0; //picking elements one by one for (int i = 0; i <
-
C++で最初に出現してから少なくともK回出現する配列内のすべての要素をカウントします
このチュートリアルでは、最初に出現してから少なくともK回出現する配列内の要素の数を見つけるプログラムについて説明します。 このために、整数配列と値kが提供されます。私たちのタスクは、考慮している要素の後の要素の中でk回発生するすべての要素を数えることです。 例 #include <iostream> #include <map> using namespace std; //returning the count of elements int calc_count(int n, int arr[], int k){ int cnt, ans
-
C++で増加するすべてのサブシーケンスをカウントします
このチュートリアルでは、増加するシーケンスの数を見つけるためのプログラムについて説明します。 このために、0から9までの数字を含む配列が提供されます。私たちのタスクは、次の要素が前の要素よりも大きくなるように、配列に存在するすべてのシーケンスをカウントすることです。 例 #include<bits/stdc++.h> using namespace std; //counting the possible subsequences int count_sequence(int arr[], int n){ int count[10] = {0}; &nb
-
C++の配列内の偶数要素と奇数要素の数をカウントします
このチュートリアルでは、配列内の偶数要素と奇数要素の数を見つけるプログラムについて説明します。 このために、アレイが提供されます。私たちのタスクは、指定された配列の偶数要素と奇数要素の数を計算することです。 例 #include<iostream> using namespace std; void CountingEvenOdd(int arr[], int arr_size){ int even_count = 0; int odd_count = 0; //looping through the
-
C++で数字として4を持つ1からnまでの数を数えます
このチュートリアルでは、数字が4である1からnまでの数字を見つけるプログラムについて説明します。 このために、番号nが提供されます。私たちの仕事は、数字の1つとして4を含むすべての数字を数え、それを印刷することです。 例 #include<iostream> using namespace std; bool has4(int x); //returning sum of digits in the given numbers int get_4(int n){ int result = 0; //calculating the
-
C++の二分探索木イテレータ
二分木用に1つのイテレータを作成するとします。 2つの方法があります。 next()メソッドは次の要素を返し、hasNext()メソッドはブール値を返します。これは次の要素が存在するかどうかを示します。したがって、ツリーが次のような場合- そして、関数呼び出しのシーケンスは、[next()、next()、hasNext()、next()、hasNext()、next()、hasNext()、next()、hasNext()]です。出力は[3,7、true、9、true、15、true、20、false]になります これを解決するには、次の手順に従います- nextとhasNextの
-
C++での二分木の右側面図
二分木があると仮定します。右側から木を見ると、そのいくつかの要素を見ることができます。それらの要素を表示する必要があります。したがって、ツリーが次のような場合- これを解決するには、次の手順に従います- dfsの支援メソッドを1つ作成します。これには、tree_node、回答を保持する配列、およびレベルが必要です。レベルは最初は0です。dfsは以下のように機能します- ノードがnullの場合は、戻ります level =回答配列の長さの場合、ノードの値をans配列に挿入します dfs(ノードの右側、ans、レベル+ 1) dfs(ノードの左側、ans、レベル+ 1) メイン関数か
-
C++でのHouseRobberII
あなたはプロの強盗だと考えてください。そして、あなたは通りに沿って家を奪うことを計画しています。各家には一定の金額が保管されています。すべての家は円形に配置されています。つまり、最初の家は最後の家の隣にあります。隣接する家屋にはセキュリティシステムが接続されており、同じ夜に隣接する2つの家屋が侵入された場合は自動的に警察に連絡することに注意する必要があります。したがって、各家の金額を表す整数のリストがある場合は、警察に警告せずに1晩に奪うことができる最大金額を決定します。したがって、配列が[1,2,3,1]の場合、出力は4になります。 これを解決するには、次の手順に従います- 私たちはs
-
C++での組み合わせ合計IIII
1から9までの数しか使用できないとすると、合計で数nになるk個の可能なすべての組み合わせを生成する必要があると考えてください。各組み合わせは、一意の番号のセットである必要があります。すべての数値は正である必要があり、ソリューションに重複する組み合わせが含まれていてはなりません。したがって、k=3およびn=9の場合、可能な組み合わせは[[1,2,6]、[1,3,5]、[2,3,4]]です。 これを解決するには、次の手順に従います- solveというメソッドを作成してこれを解決するとします。これは再帰的な方法であり、k、n、一時配列を取り、開始します。開始は最初は1です n=0の場合 tem
-
C++で完全なツリーノードをカウントする
完全な二分木があるとすると、ノードの数を数える必要があります。したがって、ツリーが次のような場合- したがって、出力は6になります。 これを解決するために、次の手順に従います これは再帰的アプローチを使用します。このメソッド、countNodes()は引数としてルートを取ります。 hr:=0およびhl:=0 ルートとして2つのノードlとrを作成します lが空でない間 hlを1増やします l:=lの左側 rが空でない間 r:=rの権利 時間を1増やします hl =hrの場合、(2 ^ hl)–1を返します return 1 + countNodes(ルートの左側)
-
C++のパーフェクトスクエア
正の整数nがあると仮定して、合計がnである完全な平方数の最小数を見つけます。したがって、数値が13の場合、数値は13 =9 + 4であるため、出力は2になります。 これを解決するには、次の手順に従います- 動的計画法用に長さn+1のテーブルを1つ作成し、それを無限大で埋めます dp [0]:=0 for i:=1、when i * i <=n x =i * i for j:=x to n dp [j]:=最小のdp[j]および1+ dp [j – x] return dp [n] 理解を深めるために、次の実装を見てみましょう- 例 #include &l
-
C++のクールダウンで株式を売買するのに最適な時期
i番目の要素がi日の特定の株式の価格である配列があるとします。最大の利益を見つけるためのアルゴリズムを設計する必要があります。必要な数のトランザクションを完了することができます(したがって、1つを購入し、1株の株式を複数回販売します)。しかし、私たちはこれらのルールに従わなければなりません- 同時に複数の取引を行うことはできません(したがって、再度購入する前に株式を売却する必要があります)。 株式を売却した後、翌日に株式を購入することはできません。 (1日クールダウン) 入力が[1,2,3,0,2]の場合、出力は3になり、シーケンスは[購入、販売、クールダウン、購入、販売]のようになりま