最大で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]