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

正確にnリットルの水を購入するために支払う必要のある最小金額を見つけるためのC++プログラム


n、a、bの3つの数があるとします。 nリットルの水を買いたいです。近くにあるウォーターボトルは、1リットルボトルと2リットルボトルの2種類のみです。最初のタイプのボトルはルピーで、2番目のタイプのボトルはブルピーです。私たちはできるだけ少ないお金を使いたいと思っています。正確にnリットルの水を購入するために必要な最小限の金額を見つける必要があります。

したがって、入力がn=7のような場合。 a =3; b =2の場合、出力は9になります。これは、2リットルのボトルが3本あれば6リットルの水を6の価格で入手できるため、1リットルのボトル1本がコスト3で必要になるためです。

ステップ

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

b := minimum of a * 2 and b
return (n / 2 * b) + (n mod 2) * a

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

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

int solve(int n, int a, int b) {
   b = min(a * 2, b);
   return n / 2 * b + n % 2 * a;
}
int main() {
   int n = 7;
   int a = 3;
   int b = 2;
   cout << solve(n, a, b) << endl;
}

入力

7, 3, 2

出力

9

  1. C++で各デカルト座標を接続するための最小コストを見つけるプログラム

    2Dデカルト座標点(x、y)のリストがあるとします。 (x0、y0)と(x1、y1)を接続できます。コストは| x0--x1|です。 + | y0--y1|。任意の数のポイントを接続できる場合は、すべてのポイントがパスで接続されるように、必要な最小コストを見つける必要があります。 したがって、入力がpoints =[[0、0]、[0、2]、[0、-2]、[2、0]、[-2、0]、[2、3]、[2 、-3]]、 (0、0)から(0、2)、(0、-2)、(2、0)、(-2、0)、コストは2、合計は8であるため、出力は14になります。 (2、3)は(0、2)に最も近く、コストは| 2 +1

  2. C++で最小の合計を持つツリーレベルを見つけるプログラム

    二分木があり、そのルートのレベルが1、子のレベルが2などであると仮定します。レベルXのノードのすべての値の合計が最小になるように、最小のレベルXを見つける必要があります。したがって、ツリーが次のような場合- 合計が4– 10 =-6であるため、出力は2になります。これは最小です。 これを解決するには、次の手順に従います- level:=1、sum:=rの値、ansLevel:=level、ansSum:=sum キューqを定義し、指定されたノードrをqに挿入します qが空ではない間 容量:=qのサイズ レベルを1増やし、合計:=0 容量が0では