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

xスワップ後の2人のライバル学生間の最大距離を見つけるC++プログラム


n、x、a、bの4つの数があるとします。並んでいる生徒はn人です。その中には2人のライバルの学生がいます。それらの1つは位置aにあり、もう1つは位置bにあります。位置は、左から右に1からnまで番号が付けられます。この2人の生徒の距離を最大限に広げたいと考えています。次の操作をx回実行できます。隣接する2人の生徒を選択し、それらを交換します。 xスワップ後、可能な最大距離を見つける必要があります。

したがって、入力がn=5のような場合。 x =1; a =3; b =2の場合、出力は2になります。これは、位置3と4で生徒を入れ替えることができるため、これら2人の生徒間の距離は|4-2|です。 =2。

ステップ

これを解決するには、次の手順に従います-

return minimum of (|a - b| + x) and (n - 1)

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

#include <bits/stdc++.h>
using namespace std;

int solve(int n, int x, int a, int b) {
   return min(abs(a - b) + x, n - 1);
}
int main() {
   int n = 5;
   int x = 1;
   int a = 3;
   int b = 2;
   cout << solve(n, x, a, b) << endl;
}

入力

5, 1, 3, 2

出力

2

  1. C++プログラムで二分木の2つのノード間の距離を見つける

    この問題では、二分木と2つのノードが与えられます。私たちの仕事は、二分木の2つのノード間の距離を見つけるプログラムを作成することです。 問題の説明 2つのノード間の距離を見つける必要があります。これは、あるノードから別のノードに移動するときに通過するエッジの最小数です。 問題を理解するために例を見てみましょう 入力 :二分木 Node1 =3、Node2 =5 出力 :3 説明 5です。距離3を作る3つのエッジが通過します。 ソリューションアプローチ この問題の簡単な解決策は、特定のノードに最も低い共通の祖先ノードを使用してから、次の式を適用することです。 dista

  2. C++で任意の都市と駅の間の最大距離を見つける

    コンセプト 0からN-1までの番号が付けられたNの都市の数と、駅が配置されている都市に関して、私たちのタスクは、任意の都市とその最寄りの駅との間の最大距離を決定することです。駅のある都市は任意の順序で指定できることに注意してください。 入力 numOfCities = 6, stations = [2, 4] 出力 2 入力 numOfCities = 6, stations = [4] 出力 4 次の図は、6つの都市と、駅が緑色で強調表示されている都市を含む最初の例を示しています。したがって、この場合、最も近い駅からの最も遠い距離は2の距離で0です。したがって、最大距離は1です。