C ++

 Computer >> コンピューター >  >> プログラミング >> C ++
  1. 二分探索木をC++の単一リンクリストに変換するプログラム?

    二分木があるとしましょう。これを(所定の場所にある)単一リンクリストに変換する必要があります。 したがって、入力が次のような場合 その場合、出力は次のようになります これを解決するには、次の手順に従います。 ser prev:=null rootを入力として受け取る再帰関数solve()を定義します。 ルートがnullの場合は、を返します。 解決(ルートの権利) 解決(ルートの左側) ルートの右側:=prev、ルートの左側:=null 前:=ルート 理解を深めるために、次の実装を見てみましょう。 例 #include <

  2. 最大数の敵を見つけるためのプログラムは、C ++に爆弾を置くために殺されますか?

    2s、1s、0sの3つの異なる値の2Dマトリックスがあるとします。ここで、2は敵を表し、1は壁を表し、0は空のセルを表します。 1つの爆弾を使って殺すことができる最大の敵を見つけなければなりません。爆弾は、植えられた地点から壁にぶつかるまで、同じ行と列にいるすべての敵を殺します。そして、爆弾は空白のスペースにしか置くことができません。 したがって、入力が次のような場合 爆弾を緑色のボックスに配置して最大3人の敵を殺すことができるため、出力は3になります。 ret:=0 n:=グリッドの行数、m:=グリッドの列数 サイズmの配列列を定義します 初期化i:=0の

  3. C ++で時計の時針と分針の間の角度を見つけるプログラム?

    時間と分の2つの値があるとします。時針と分針の間に形成される小さな角度を見つける必要があります。 したがって、入力が時間=12分=45の場合、出力は112.5になります。 これを解決するには、次の手順に従います。 h =12の場合、h:=0を設定します m =60の場合、m:=0を設定します hAngle:=0.5 *(60h)+ m マングル:=6m ret:=| hAngle --mAngle | 最小のretと(360 – ret)を返します。理解を深めるために、次の実装を見てみましょう。 例 #include <bits/std

  4. C ++の通信塔で最小数のグループを見つけるプログラム?

    1が通信塔を表し、0が空のセルを表す2Dバイナリ行列があるとします。タワーは次の方法で通信できます。1。タワーAとタワーBが同じ行または列にある場合、それらは互いに通信できます。 2.タワーAがタワーBと通信でき、BがCと通信できる場合、AはC(推移的プロパティ)と通信できます。そこにあるタワーグループの総数を見つける必要があります(ここで、グループは互いに会話できるタワーのリストです)。 したがって、入力が次のような場合 1 1 0 0 0 1 1 0 1 これを解決するには、次の手順に従います。 関数dfs()を定義します。

  5. C ++のコストで連続する重複文字を削除するコストを見つけるプログラム?

    小文字の文字列があり、コストと呼ばれる負でない値のリストもあるとします。文字列とリストの長さは同じです。 costcosts[i]の文字s[i]を削除すると、s[i]とcosts[i]の両方が削除されます。連続して繰り返されるすべての文字を削除するための最小コストを見つける必要があります。 したがって、入力がs =xxyyx nums =[2、3、10、4、6]の場合、s[0]とs[3]を削除して合計コストを計算できるため、出力は6になります。 2 +4=6。 これを解決するために、次の手順に従います 1つのスタックstを定義する コスト:=0 初期化i:=0の場合、i

  6. C ++のnの階乗で後続ゼロを見つけるプログラム?

    数nがあるとすると、nの後続ゼロの数を見つける必要があります!。 したがって、入力がn =20の場合、出力は4、つまり20になります。 =2432902008176640000 これを解決するために、次の手順に従います セットカウント:=0 1、update i:=i * 5、do count:=count +(n / i) 返品数 理解を深めるために、次の実装を見てみましょう 例 #include <iostream> #include <cmath> #define MAX 20 using namespace std;

  7. C++での2つの重複しないサブアレイの最大合計

    整数の配列Aがあるとします。重複しない2つのサブ配列で要素の最大合計を見つける必要があります。これらのサブアレイの長さはLとMです。 つまり、より正確に言えば、最大のVを見つける必要があります V =(A [i] + A [i + 1] + ... + A [i + L-1])+(A [j] + A [j + 1] + ... + A [j + M-1])およびいずれかの- 0 <=i

  8. C++で連続IIまで石を動かす

    無限の数直線を考えているとしましょう。ここでは、i番目の石の位置は配列石で与えられ、stones[i]はi番目の石の位置を示しています。石は、最小または最大の位置にある場合、終点の石です。今度は各ターンで、エンドポイントストーンを拾い上げ、それを空いている位置に移動して、エンドポイントストーンではなくなるようにします。 ストーンがたとえばstones=[1,2,5]の場合、エンドポイントストーンを任意の位置(0や3など)に移動してもエンドポイントストーンとして保持されるため、エンドポイントストーンを位置5に移動することはできません。 。 これ以上動かなくなると、このゲームは停止します。した

  9. C++の二分木のいとこ

    二分木があり、ルートノードが深さ0にあり、各深さkノードの子が深さk+1にあるとします。 ここで、二分木の2つのノードは、深さが同じで親が異なる場合、いとこと呼ばれます。 ツリーのすべての値は一意であり、ツリー内の2つの異なるノードの値xとyです。値xとyに対応するノードがいとこであるかどうかを確認する必要があります。 したがって、入力が次のような場合 x =5、y =4の場合、出力はtrueになります これを解決するには、次の手順に従います- 1つのマップを定義する 1つのキューを定義するq ルートをqに挿入 um [x]:=um [y]:=null

  10. C++でのオレンジの腐敗

    グリッドがあるとします。ここでは、各セルに3つの値のいずれかを含めることができます- 空のセルの場合は値0; フレッシュオレンジの値1; 腐ったオレンジの値は2です。 毎分、腐ったオレンジに隣接する新鮮なオレンジは腐ります。 セルに新鮮なオレンジがなくなるまで経過しなければならない最小回数を見つける必要があります。これが不可能な場合は、-1を返します。 したがって、入力が[[2,1,1]、[1,1,0]、[0,1,1]]の場合、出力は4になります。 これを解決するには、次の手順に従います- 分:=0 rowMax:=グリッドの行サイズ c

  11. C++のLonelyPixelII

    黒と白のピクセルで構成される画像があるとすると、行Rと列Cに存在する黒のピクセルの数を見つける必要があります。これは次のすべてのルールに沿っています- RとCには正確にN個の黒いピクセルが含まれます 列Cに黒いピクセルがあるすべての行について、行Rとまったく同じである必要があります。 ここで、画像は、それぞれ黒と白のピクセルの「B」と「W」で構成される2D文字配列で表されます。 入力が-のような場合 W B W B B W W B W B B W W B W B B W W W

  12. C++で文字列から二分木を構築する

    括弧と整数で構成される文字列があるとします。その文字列から二分木を構築する必要があります。入力全体が二分木を表します。これは、0、1、または2組の括弧が後に続く整数を保持します。整数はルートの値を表し、括弧のペアには同じ構造の子二分木が含まれます。 したがって、入力が「4(2(3)(1))(6(5))」の場合、出力は[3,2,1,4,5,6](順序付き走査)になります これを解決するには、次の手順に従います- 関数solve()を定義します。これには、s、idx、が必要です。 =sのサイズの場合、- nullを返す num:=空の文字列 while(

  13. C++での出力コンテストの一致

    n個のチームがあり、ランク1のチームをランクnのチームと対戦させるなど、常にかなり強いチームを配置して、かなり弱いチームと対戦するとします。この戦略は、コンテストをより面白くすることです。次に、最終的なコンテストの試合を文字列の形式で見つける必要があります。 これらのチームは、初期ランクを表す1からnまでの正の整数の形式で与えられます。したがって、ランク1が最強のチームであり、ランクnが最弱のチームです。コンテストチームのペアリングを表すために括弧とコンマを使用します。ペアリングには括弧((‘、))を使用し、パーティションにはコンマ(、)を使用します。各ラウンドのペアリングプロセスでは、常に

  14. C++での二分木の境界

    二分木があるとすると、ルートから反時計回りにその境界の値を見つける必要があります。ここでの境界には、左側の境界、葉、右側の境界が含まれ、ノードが重複することはありません。 左側の境界は、ルートから左端のノードまでのパスです。 右の境界は、ルートから右端のノードまでのパスです。 ルートに左サブツリーまたは右サブツリーがない場合、ルート自体は左境界または右境界になります。 したがって、入力が次のような場合 その場合、出力は[1,2,4,7,8,9,10,6,3]になります。 これを解決するには、次の手順に従います- 配列retを定義する 関数leftB

  15. C++で合計が等しい配列を分割

    n個の整数の配列があるとすると、これらの条件に従うトリプレット(i、j、k)があるかどうかを確認する必要があります- 0

  16. C++での二分木最長連続シーケンスII

    二分木があるとしましょう。その二分木で最長の連続パスの長さを見つける必要があります。ここで、パスは増加または減少する可能性があります。したがって、例として、[1,2,3,4]と[4,3,2,1]は両方とも有効なパスと見なされますが、パス[1,2,4,3]は有効なパスではありません。 それ以外の場合、パスは子-親-子の順序になる可能性がありますが、必ずしも親子の順序である必要はありません。 したがって、入力が次のような場合 最長の連続パスは[1、2、3]または[3、2、1]のようになるため、出力は3になります。 これを解決するには、次の手順に従います- 関数solveUtil

  17. C++で連結文字列を分割する

    文字列のリストがあるとすると、これらの文字列を1つのループに連結できます。ここで、文字列ごとに、文字列を反転するかどうかを選択できます。考えられるすべてのループの中で、ループを切断した後、辞書式順序で最大の文字列を見つける必要があります。これにより、ループされた文字列が通常の文字列になります。具体的には、辞書式順序で最大の文字列を見つけるには、2つのフェーズを経験する必要があります- すべての文字列を1つのループに連結します。ここで、一部の文字列を逆にするかどうかを指定して、指定されたのと同じ順序で接続できます。 ループの任意の場所でカットして1つのカットポイントを作成します。これにより、

  18. C++のマトリックス内の連続する1つの最長行

    1つのバイナリ行列Mがあるとすると、その行列で連続するものの最長の行を見つける必要があります。線は、水平、垂直、対角、反対角のいずれかになります。 したがって、入力が次のような場合 0 1 1 0 0 1 1 0 0 0 0 1 その場合、出力は3になります。 これを解決するには、次の手順に従います- ret:=0 n:=Mの行 m:=Mの列 次数nxmx4の3D配列dpを1つ定義します 初期化i:=0の場合、i

  19. C++でのリスのシミュレーション

    木、リス、そしていくつかのナッツがあります。位置は、2Dグリッドのセルで表されます。あなたの目標は、リスがすべてのナッツを集めて、それらを1つずつ木の下に置くための最小距離を見つけることです。リスは一度に最大で1つのナットしかとることができず、隣接するセルに向かって上下左右の4つの方向に移動できます。距離は移動回数で表されます。 したがって、入力が高さ:5幅:7木の位置:[2,2]リス:[4,4]ナッツ:[[3,0]、[2,5]]の場合、出力は12になります。 、 これを解決するには、次の手順に従います- 関数calc()を定義します。これには、x1、y1、x2、y2、が必要で

  20. C++でプロセスを強制終了します

    n個のプロセスがあるとします。ここでは、各プロセスにPIDまたはプロセスIDと呼ばれる一意のIDがあり、そのPPID(親プロセスID)もそこにあります。 各プロセスには1つの親プロセスしかありませんが、1つ以上の子プロセスがある場合があります。 これは木の構造のようなものです。 PPID =0のプロセスは1つだけです。これは、このプロセスに親プロセスがないことを意味します。すべてのPIDは一意の正の整数になります。 プロセスのリストを表すために2つの整数のリストを使用します。最初のリストには、各プロセスのPIDが含まれ、2番目のリストには対応するPPIDが含まれます。したがって、2つのリ

Total 5992 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:223/300  20-コンピューター/Page Goto:1 217 218 219 220 221 222 223 224 225 226 227 228 229