C++プログラムの正多角形上の3人目の位置を決定します
このチュートリアルでは、正多角形上の第三者の位置を見つける方法を学習します。
正多角形を与えました。そして、すでに2つの異なる点に2人の人がいます。私たちの仕事は、最初の2人と3人目の距離が最小になるように、3人目の人物を配置するための3番目のポイントを見つけることです。
問題を解決するための手順を見てみましょう。
-
Nと2つのポイントAとBを初期化します。
-
第三者の位置と、位置を見つけるための最小合計を初期化します。
-
1からNまで繰り返します。
-
現在の位置がAまたはBの場合は、スキップします。
-
現在の位置とA、Bの絶対差の合計を求めます。
-
最小合計と比較してください。
-
現在の合計が最小合計よりも小さい場合は、位置と最小合計を更新します。
-
-
第三者の位置を印刷します。
例
コードを見てみましょう。
#include <bits/stdc++.h>
using namespace std;
int findThirdPersonStandingVertex(int N, int A, int B) {
int position = 0;
int minimum_sum = INT_MAX, sum;
for (int i = 1; i <= N; i++) {
// skipping the predefined vertices
if (i == A || i == B) {
continue;
}
else {
// length between the current vertext to A and B
sum = abs(i - A) + abs(i - B);
// checking whether the current sum is less than previous sum
if (sum < minimum_sum) {
// updating the minimum sum and position of vertext
minimum_sum = sum;
position = i;
}
}
}
return position;
}
int main() {
int N = 7, A = 5, B = 7;
cout << "Vertex: " << findThirdPersonStandingVertex(N, A, B) << endl;
return 0;
} 出力
上記のプログラムを実行すると、次の結果が得られます。
Vertex: 6
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
C++で最も深いノードの合計を見つけるプログラム
二分木があるとしましょう。その最も深い葉の値の合計を見つける必要があります。したがって、ツリーが次のような場合- その場合、出力は11になります。 これを解決するには、次の手順に従います- マップmとmaxDepthを定義します 再帰メソッドsolve()を定義します。これはノードとレベルを取り、最初はレベルは0です ノードが存在しない場合は、戻ります maxDepth:=レベルの最大値とmaxDepth ノードの値だけm[レベル]を増やします 解決(ノードの左側、レベル+ 1) 解決(ノードの右側、レベル+ 1) mainメソッドで
-
C++で二分木の右葉の合計を見つけるプログラム
二分木があるとすると、与えられた二分木のすべての正しい葉の合計を見つける必要があります。 したがって、入力が次のような場合 バイナリツリーにはそれぞれ値7と10の2つの右葉があるため、出力は17になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これにより、ノード、追加、が取得されます。 ノードがnullの場合、- 戻る ノードの左側がnullで、ノードの右側がnullで、addがゼロ以外の場合、- ret:=ret+ノードの値 dfs(ノードの左側、false) dfs(ノードの右側、true)