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]
- for j:=0からi
- return dp [0]
理解を深めるために、次の実装を見てみましょう
例
class Solution { public: void printVector(vector <int>& v){ for(int i = 0; i < v.size(); i++)cout << v[i] << " "; cout << endl; } 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]); } // printVector(dp); } return dp[0]; } };
入力
[ [2], [3,4], [6,5,7], [4,1,8,3] ]
出力
11
-
C++でのラインリフレクション
2D平面上にn個の点があるとすると、指定された点を対称的に反射するy軸に平行な線があるかどうかを確認する必要があります。つまり、指定された線上にすべての点を反映した後に線が存在するかどうかを確認する必要があります。元のポイントのセットは、反映されたポイントと同じです。 したがって、入力がpoints =[[1,1]、[-1,1]]のような場合 その場合、出力はtrueになります これを解決するには、次の手順に従います- 1つのセットを定義します。 n:=ポイントのサイズ minVal:=inf maxVal:=-inf 初期化i:=0の場合、i <
-
C++でのstatic_cast
static_castは、通常/通常の型変換に使用されます。これは、暗黙的な型強制の原因となるキャストでもあり、明示的に呼び出すこともできます。 floatをintに、charをintに変換する場合などに使用する必要があります。これにより、関連する型クラスをキャストできます。 例 #include <iostream> using namespace std; int main() { float x = 4.26; int y = x; // C like cast int z = static_cas