C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で人々を救うためのボート


peopleという配列があるとします。これで、i番目の人の体重は人[i]になり、各ボートは最大重量の制限を運ぶことができます。各ボートが同時に最大2人を乗せる場合、それらの人の体重の合計が最大で制限されていることを条件とします。私たちは、与えられたすべての人を運ぶためのボートの最小数を見つけなければなりません。したがって、入力が[3,2,1,2]のようで、制限が3の場合、3つのボートが必要です。 [(1,2)、(2)、(3)]。

これを解決するには、次の手順に従います-

  • 人々の配列を並べ替える

  • i:=0、j:=人の配列のサイズ– 1、ret:=0

  • i <=j

    • people [i] + people [j] <=制限の場合、i:=i + 1およびj:=j – 1、それ以外の場合、j:=j – 1

    • ret:=ret + 1

  • retを返す

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int numRescueBoats(vector<int>& people, int limit) {
      sort(people.begin(), people.end());
      int i = 0;
      int j = people.size() - 1;
      int ret = 0;
      while(i <= j){
         if(people[i] + people[j] <= limit){
               i++, j--;
         }else{
            j--;
         }  
         ret++;
      }
      return ret;
   }
};
main(){
   vector<int> v = {3,2,1,2};
   Solution ob;
   cout << (ob.numRescueBoats(v, 3));
}

入力

[3,2,1,2]
3

出力

3

  1. C++の識別子

    C ++識別子は、変数、関数、クラス、モジュール、またはその他のユーザー定義アイテムを識別するために使用される名前です。識別子は、文字AからZまたはaからzまたはアンダースコア(_)で始まり、その後に0個以上の文字、アンダースコア、および数字(0から9)が続きます。 C ++では、識別子内に@、$、%などの句読文字を使用できません。 C ++は、大文字と小文字を区別するプログラミング言語です。したがって、Manpowerとmanpowerは、C++では2つの異なる識別子です。 受け入れ可能な識別子の例を次に示します- mohd Piyush abc move_na

  2. LinuxでのC++の最高のIDEは何ですか?

    大きなプロジェクトは、単なるテキストエディタでは管理が困難です。このような場合にIDEを使用すると、生産性が向上し、フラストレーションが軽減される可能性があります。 IDEにはさまざまな種類があり、ニーズに合ったものを選択する必要があります。 Linux上のC++に最適なIDEは1つではありません。ツールは賢く選ぶ必要があります。 Linux用の人気のあるIMOの最高のIDEのリストは次のとおりです。 C /C++開発用のNetbeans- Netbeansは、C /C++および他の多くのプログラミング言語向けの無料のオープンソースで人気のあるクロスプラットフォームIDEです。コミュニテ