C++を使用する鉄道駅に必要なプラットフォームの最小数。
問題の説明
鉄道駅に到着するすべての列車の到着時刻と出発時刻を考えると、列車が待たないように、鉄道駅に必要なプラットフォームの最小数を見つけることがタスクです。
停車する列車の到着時刻と出発時刻を表す2つの配列が与えられます。
以下の入力には、少なくとも3つのプラットフォームが必要です-
| トレーニング | 到着時間 | 出発時間 |
|---|---|---|
| Train-1 | 09:00 | 09:15 |
| Train-2 | 09:35 | 11:45 |
| Train-3 | 09:40 | 11:05 |
| Train-4 | 11:00 | 12:00 |
| 電車-5 | 14:30 | 18:15 |
| 電車-6 | 18:00 | 19:00 |
アルゴリズム
1. Sort arrival and departure time arrays in ascending order 2. Trace the number of trains at any time keeping track of trains that haves arrived, but not departed
例
#include <iostream>
#include <algorithm>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;
int getPlatformCount(int *arrival, int *departure, int n){
sort(arrival, arrival + n);
sort(departure, departure + n);
int platformCnt = 1;
int result = 1;
int i = 1;
int j = 0;
while (i < n && j < n) {
if (arrival[i] <= departure[j]) {
++platformCnt;
++i;
if (platformCnt > result) {
result = platformCnt;
}
} else {
--platformCnt;
++j;
}
}
return result;
}
int main()
{
int arrival[] = {900, 935, 940, 1100, 1430, 1800};
int departure[] = {915, 1145, 1105, 1200, 1815, 1900};
cout << "Minimum required platforms = " <<
getPlatformCount(arrival, departure, SIZE(arrival)) << endl;
return 0;
} 出力
上記のプログラムをコンパイルして実行する場合。次の出力を生成します-
Minimum required platforms = 3
-
C ++を使用して、数の因数の最小合計を求めます。
ここでは、与えられた数の因子の最小合計を取得する方法を見ていきます。数が12であると仮定します。これはさまざまな方法で因数分解できます- 12 =12 * 1(12 + 1 =13) 12 =2 * 6(2 + 6 =8) 12 =3 * 4(3 + 4 =7) 12 =2 * 2 * 3(2 + 2 + 3 =7) 最小の合計は7です。数値を取り、最小の因子の合計を見つけようとします。最小の因数分解の合計を取得するには、可能な限り数を因数分解する必要があります。言い換えれば、素因数を足して合計Sを求めようとすると、その合計は最小化されると言えます。 例 #include<
-
C++で最小ページ数を割り当てます
最小ページ数を割り当てることはプログラミングの問題です。この問題について詳しく話し合い、解決策を見つけましょう。 ステートメント n冊の異なる本のページ数が与えられます 。また、m人の学生がいます 書籍の割り当て先。本はページ数の昇順で並べられています。そして、すべての学生にいくつかの連続した本を割り当てることができます。プログラムは、学生が読んだ最大ページ数を返す必要があります。これは最小でなければなりません。 この問題をよりよく理解するために例を見てみましょう。 Input : books[] = {13 , 43, 65, 87, 92} m = 2 Out