C ++の二分探索を使用して、指定された精度までの数の平方根を検索します
正の数nと精度pがあるとします。二分探索法を使用して、小数点以下p桁までの数nの平方根を見つける必要があります。したがって、数値がn =50、p =3の場合、出力は7.071になります。
だからこれを解決するには、いくつかの手順に従う必要があります-
- start:=0およびend:=nを初期化します
- 中間の整数の2乗を比較します。これが数値と等しい場合は、整数部分が検出されます。それ以外の場合は、必要に応じて左または右を探します。
- 積分部分のタスクが完了したら、小数部分のタスクを実行します。
- インクリメント変数を0.1として初期化し、p桁までの小数部を計算します。反復ごとに、増分は前の値の1/10に変更されます。
- 最後に答えを返します。
例
#include<iostream> using namespace std; float sqrtBinarySearch(int num, int p) { int left = 0, right = num; int mid; float res; while (left <= right) { mid = (left + right) / 2; if (mid * mid == num) { res = mid; break; } if (mid * mid < num) { left = mid + 1; res = mid; } else { right = mid - 1; } } float incr = 0.1; for (int i = 0; i < p; i++) { while (res * res <= num) { res += incr; } res -= incr; incr /= 10; } return res; } int main() { int n = 50, p = 3; cout << "Square root of " << n << " up to precision " << p << " is: " << sqrtBinarySearch(50, 3) << endl; }
出力
Square root of 50 up to precision 3 is: 7.071
-
C++で特定の二分木の左葉ノードの合計を求めます
ルートノードとその左の子と右の子を持つ二分木があるとしましょう。タスクは、親ノードに残されているツリーのリーフノードの合計を見つけることです。 例 入力-1: 出力: 15 説明: 与えられた入力二分木では、すべての左側の葉ノードの合計は9 + 4 + 2 =15です。したがって、出力は15です。 この問題を解決するためのアプローチ 二分木があり、その親に残されているすべてのリーフノードの合計を見つけることがタスクです。 この問題を解決するための再帰的なアプローチは、ルートノードの左側のノードが空かどうかを確認することです。空の場合は、左側のノードの合計を計算し、右
-
C++のバイナリツリーでルートから特定のノードまでの距離を検索します
ノードが少ない二分木があると考えてください。ルートと別のノードuの間の距離を見つける必要があります。ツリーが次のようになっているとします。 これで、(root、6)=2の間の距離、パスの長さは2、(root、8)=3の間の距離などになります。 この問題を解決するために、再帰的アプローチを使用して、左右のサブツリーでノードを検索し、各レベルの長さも更新します。 例 #include<iostream> using namespace std; class Node { public: int data; &