最大でM個の製品をC++で販売することにより、利益を最大化します。
与えられたタスクは、多くても「M」の製品を販売することで得られる最大の利益を計算することです。
製品の総数は「N」であり、各製品の原価と販売価格は、それぞれリストCP[]とSP[]に示されています。
入力
N=6, M=4 CP[]={1,9,5,8,2,11} SP[]={1,15,10,16,5,20}
出力
28
説明 −すべての製品を販売することで得られる利益は、それぞれ0、6、5、8、3、9です。
したがって、4つの製品のみを販売して最大の利益を上げるには、最も利益の高い製品、つまり製品番号2、3、4、および6を選択する必要があります。
最大利益=6+ 5 + 8 + 9 =28
入力
N=3, M=2 CP[]={10,20,30} SP[]={19,22,38}
出力
17
以下のプログラムで使用されるアプローチは次のとおりです
-
タイプintおよびサイズ「N」の配列Profit[]を作成して、各製品から得られた利益を格納します。
-
int型の変数Totalを作成して、最終的な最大利益を格納します。
-
i=0からi
までループします -
ループ中に、Profit [i] =Sp [i] – Cp [i]
を設定します -
関数sort(Profit、Profit + N、greater
());を呼び出します。 Profit[]配列をdescendingarrayに配置します。 -
再びi=0からi
までループします -
ループ中にif条件を設定し、if(Profit [i]> 0)を使用して値が正かどうかを確認し、正の場合はtotal + =Profit [i];
を設定します。 -
合計を返す;
例
#include <bits/stdc++.h> using namespace std; //Function to find profit int MaxProfit(int N, int M, int Cp[], int Sp[]){ int Profit[N]; int total = 0; //Calculating profit from each product for (int i = 0; i < N; i++) Profit[i] = Sp[i] - Cp[i]; //Arranging profit array in descending order sort(Profit, Profit + N, greater<int>()); //Adding the best M number of profits for (int i = 0; i < M; i++){ if (Profit[i] > 0) total += Profit[i]; else break; } return total; } //Main function int main(){ int MP; int N=6,M=4; int CP[] = { 1, 9, 5, 8, 2, 11 }; int SP[] = { 1, 15, 10, 16, 5, 20 }; MP = MaxProfit(N, M, CP, SP); cout<<”Maximum Profit:”<<MP; return 0; }
出力
上記のコードを実行すると、次の出力が得られます-
Maximum Profit: 28
-
C++のMazeIII
空のスペースと壁のある迷路があり、その迷路の中にボールもあるとします。ボールは、上(u)、下(d)、左(l)、または右(r)の方向に転がることで空きスペースを通過できますが、壁にぶつかるまで転がり続けます。ボールが止まると、次の方向を選ぶことができます。その迷路にも1つの穴があります。ボールが穴に転がると、ボールは穴に落ちます。 したがって、ボールの位置、穴の位置、迷路がある場合、最短距離を移動することでボールがどのように穴に落ちるかを調べる必要があります。ここで、距離は、ボールがスタート(除外)からホール(含まれる)まで移動した空きスペースの数によって定義されます。 「u」、「d」、「l
-
C++でのジョブスケジューリングの最大利益
n個の異なるタスクがあり、すべてのタスクがstartTime[i]からendTime[i]まで実行されるようにスケジュールされていると仮定します。そのタスクでは、利益[i]を得ることができます。 startTime、endTime、および利益のリストがわかっているので、時間範囲が重複するサブセットに2つのタスクがないように、取得できる最大の利益を見つける必要があります。時間Xで終了するタスクを選択すると、時間Xで開始する別のタスクを開始できます。 したがって、入力がstartTime =[1,2,3,3]の場合、endTime=[3,4,5,6]利益=[500,100,400,700]