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

C++でチップを試す


いくつかのチップがあるとすると、i番目のチップは現在位置チップ[i]にあります。次の2つのタイプの操作は、任意のチップで必要に応じて何度でも実行できます(場合によってはゼロ)-

  • i番目のチップを2ユニットずつ左側または右側に移動します。コストは0です。

  • i番目のチップを1単位ずつ左側または右側に移動します。コストは1です。

最初は、2つ以上のチップが存在する可能性があります。すべてのチップを同じ位置に移動するために必要な最小コストを返す必要があります。最終的な位置は何でもかまいません。したがって、最初のチップの配列が[2,2,2,3,3]の場合、出力は2になります。4番目と5番目のチップの両方がコスト1で位置2に移動されます。したがって、合計最小コストは2<になります。 / P>

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

  • 奇数:=0および偶数:=0

  • 0から配列の長さまでの範囲のiの場合

    • chip [i]が奇数の場合は奇数を増やし、そうでない場合は偶数を増やします

  • 最小の奇数と偶数を返します。

例(C ++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minCostToMoveChips(vector<int>& chips) {
      int odd =0;
      int even = 0;
      for(int i =0;i<chips.size();i++){
         if(chips[i]&1)odd++;
         else even++;
      }
      return min(odd,even);
   }
};
main(){
   Solution ob;
   vector<int> v1 = {2,2,2,3,3};
   cout << ob.minCostToMoveChips(v1);
}

入力

[2,2,2,3,3]

出力

2

  1. C++で最も水が多いコンテナ

    コンテナの壁の高さの配列が与えられます。目標は、最大量の水を入れることができる容器を見つけることです。壁の高さは配列の要素であるため、壁の間の距離は2つの壁の間の幅と見なされます。たとえば、高さArr[i]とArr[j]の壁の間にj-i幅があります(0 <=i

  2. C++で3nスライスのピザ

    さまざまなサイズの3nスライスのピザがあるとすると、私と2人の友人は次のようにピザのスライスを取ります- ピザのスライスを選びます。 友達のアマルが私のピックの反時計回りに次のスライスをピックします。 友達のBimalが、私のピックの時計回りに次のスライスをピックします。 ピザのスライスがなくなるまで、これらの手順を繰り返します。 ピザスライスのサイズは、時計回りの円形配列スライスで表されます。可能な最大のスライスサイズの合計を見つける必要があります。 したがって、入力が[9,8,6,1,1,8]のような場合、 次に、各ターンでサイズ8のピザスライスを選