C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の三角形


三角形があるとします。上から下への最小経路合計を見つける必要があります。各ステップで、下の行の隣接する番号に移動できます。

たとえば、次の三角形が次のような場合

[
      [2],
     [3,4],
    [6,5,7],
   [4,1,8,3]
]

上から下への最小経路合計は11(2 + 3 + 5 + 1 =11)です。

手順を見てみましょう-

  • 動的計画法で使用するテーブルを1つ作成します。

  • n:=三角形のサイズ

  • for i:=n –2から0まで

    • for j:=0からi

      • dp [j]:=三角形[i、j]+最小のdp[j]とdp[j + 1]

  • dp [0]

    を返します

例(C ++)

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minimumTotal(vector<vector<int>>& triangle) {
      vector <int> dp(triangle.back());
      int n = triangle.size();
      for(int i = n - 2; i >= 0; i--){
         for(int j = 0; j <= i; j++){
            dp[j] = triangle[i][j] + min(dp[j], dp[j + 1]);
         }
      }
      return dp[0];
   }
};
main(){
   Solution ob;
   vector<vector<int> > v = {{2},{3,4},{6,5,7},{4,1,8,3}};
   cout << ob.minimumTotal(v);
}

入力

[
      [2],
     [3,4],
    [6,5,7],
   [4,1,8,3]
]

出力

11

  1. C++で三角形の図心を見つけるプログラム

    この問題では、三角形の3つの頂点の座標を示す2D配列が与えられます。私たちのタスクは、C++で三角形のセントロイドを見つけるプログラムを作成することです。 セントロイド 三角形の3つの中央値は、三角形の3つの中央値が交差する点です。 中央値 三角形の頂点は、三角形の頂点とその反対側の線の中心点を結ぶ線です。 問題を理解するために例を見てみましょう 入力 (-3, 1), (1.5, 0), (-3, -4) 出力 (-3.5, -1) 説明 Centroid (x, y) = ((-3+2.5-3)/3, (1 + 0 - 4)/3) = (-3.5, -1) ソリューションアプロ

  2. C++の平行四辺形内の三角形の面積

    図形の面積は、2次元平面での図形の範囲です。 三角形 は3辺のポリゴンです。 平行四辺形 は、反対側が等しく平行な四辺形です。 このプログラムでは、底辺と高さが平行四辺形で、平行四辺形と同じ底辺に三角形が内接しています。指定された底辺と高さを使用して三角形の面積を計算する必要があります。 平行四辺形は次の式で与えられるため、構築された三角形の面積は平行四辺形の底と一般的な高さを取ります=0.5*底*高さ area = ½ * b * h 例 #include<iostream> #include<math.h> using names