C++で合計金額を支払うために必要なコインの最小数を調べます
数Nがあり、1、10、および25通貨のコインに相当する無制限の数のコインがあるとします。正確な金額Nを支払うために使用する必要のあるコインの最小数を見つけます。Nが14であるとすると、コインの数は5になり、10の価値のあるコインが1つ、1の価値のあるコインが4つになります。
これを解決するには、次の手順を使用する必要があります-
- N <10の場合、N個の1バリューコインを返します
- N>9およびN<25の場合、値を10で除算して結果を取得します。残りは、1つの値のコインでカバーされ、カウントを加算して結果を取得します。
- N> 25の場合は、25で除算し、結果を取得します。結果が25未満の場合は、2番目のポイントに対して同じタスクを再度実行します。
例
#include<iostream> using namespace std; int countMinCoins(int n) { if(n<10) return n; else if(n > 9 && n < 25){ int count = n/10; count += n%10; return count; } else { int count = n/25; return count + countMinCoins(n%25); } } int main() { int n = 88; cout << "Minimum number of coins required: " << countMinCoins(n); }
出力
Minimum number of coins required: 7
-
パスを作成するためにグリッドでブロックするセルの数を見つけるためのC++プログラム
次元h*wのグリッドがあるとします。セル位置(0、0)にロボットがあり、その位置(h-1、w-1)に移動する必要があります。グリッドには、ブロックされたセルとブロックされていないセルの2種類のセルがあります。ロボットはブロックされていないセルを通過できますが、ブロックされたセルを通過することはできません。ロボットは4つの方向に進むことができます。左、右、上、下に移動できます。ただし、ロボットはセルから別のセルに任意の方向に移動する可能性があるため(前のセルを無視して)、1つのパスのみを作成し、そのパスにない他のすべてのセルをブロックする必要があります。 (0、0)から(h -1、w -1)まで
-
C++で対戦相手を捕まえるために必要な最小ステップ数を見つけるためのプログラム
[u、v]の形式のツリーエッジのリストがあると仮定します。これは、uとvの間に無向エッジがあることを示します。また、xとyの2つの値があります。ノードxにいて、対戦相手がノードyにいる場合。最初のラウンドでは移動し、次のラウンドでは対戦相手が移動します。対戦相手は、ラウンドで移動しないことを選択できます。対戦相手を捕まえるのに必要な最小ラウンド数を見つける必要があります。 したがって、入力がedges =[[0、1]、[0、2]、[1、3]、[1、4]]、x =0、y =3のような場合、出力は3になります。最初と同じように、ノード0から1に移動します。その後、対戦相手は現在のノード3に留まり