装飾を良くするための最大の装飾を見つけるためのC++コード
y、b、rの3つの数があるとします。 y個の黄色い装飾品、b個の青い装飾品、r個の赤い装飾品があります。使用する青い装飾品の数が黄色の装飾品の数よりも正確に1多い場合、使用される赤い装飾品の数が青い装飾品の数よりも正確に1多い場合、装飾は美しくなります。私たちはできるだけ多くの装飾品を選び、装飾を良くしたいと思っています。美しい装飾に使用される装飾品の最大数を見つける必要があります。
したがって、入力がy=8のような場合。 b =13; r =9の場合、7 + 8 + 9 =24であるため、出力は24になります。
ステップ
これを解決するには、次の手順に従います-
return 3 * (minimum of y, (b - 1) and (r - 2))
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; int solve(int y, int b, int r){ return 3 * min(y, min(b - 1, r - 2)) + 3; } int main(){ int y = 8; int b = 13; int r = 9; cout << solve(y, b, r) << endl; }
入力
8, 13, 9
出力
24
-
C++でソート済みIIを作成するための最大チャンク
整数の配列arrがあるとすると、配列をいくつかのパーティションに分割し、各パーティションを個別にソートする必要があります。それらを連結した後、1つのソートされた配列を取得します。作成できるパーティションの最大数を見つける必要がありますか? したがって、入力が[3,2,4,5,5]の場合、出力は4になります。これは、[3,2]、[4]、[5]、[5]のようなパーティションを作成できるためです。 これを解決するには、次の手順に従います- cnt:=1 n:=arrのサイズ サイズnの配列maxOfLeftを定義します サイズnの配列minOfRightを定義します
-
C++でソートする最大チャンク
[0、1、...、arr.length --1]の順列である配列arrを指定したとすると、配列をいくつかの「チャンク」に分割する必要があります。 またはパーティション、および各パーティションを個別に並べ替えます。したがって、それらを連結した後、結果はソートされた配列になります。したがって、配列が[1,0,2,3,4]のような場合、出力は4になります。これは、[1、0]と[2,3,4]のような2つのパーティションに分割できるためですが、これは可能です。 [1、0]、[2]、[3]、[4]も同様です。つまり、これは可能な限り最大のチャンク数であるため、出力は4です。 作成できたチャンクの最大数は