কম্পিউটার টিউটোরিয়াল

চিপস খেলা (Play with Chips) C++-এ

সমস্যা বিবরণ

কিছু চিপস আছে, i-তম চিপস chips[i] পজিশনে আছে। দুটি অপারেশন করা যায় যেকোনো সংখ্যক বার:

  • চিপস ২ ইউনিট বাম/ডানে সরানো (কস্ট ০)।
  • চিপস ১ ইউনিট বাম/ডানে সরানো (কস্ট ১)।

সব চিপস একই পজিশনে আনতে ন্যূনতম কস্ট বের করতে হবে। ফাইনাল পজিশন যেকোনো হতে পারে।

উদাহরণ: chips = [2,2,2,3,3] → আউটপুট ২। চতুর্থ ও পঞ্চম চিপস পজিশন ২-এ আনতে হলে কস্ট ১+১=২।

সমাধানের ধাপসমূহ

  • odd := 0, even := 0
  • সব চিপসের জন্য: যদি chips[i] বিজোড় হয় odd++, অন্যথায় even++
  • min(odd, even) রিটার্ন করুন।

কারণ: ২ ইউনিট মুভ ফ্রি, তাই সম/বিজোড় প্যারিটি পরিবর্তন করা যায় না। সব চিপস সম পজিশনে আনতে হলে বিজোড় চিপসগুলো ১ ইউনিট মুভ করতে হবে (কস্ট ১ প্রতিটি)। একইভাবে বিজোড় পজিশনে আনতে হলে সম চিপসগুলোর কস্ট। ন্যূনতম কস্ট হবে min(odd, even)।

C++ কোড উদাহরণ

#include <bits/stdc++.h> 
using namespace std; 

class Solution { 
public: 
    int minCostToMoveChips(vector<int>& chips) { 
        int odd = 0, even = 0; 
        for (int i = 0; i < chips.size(); i++) { 
            if (chips[i] & 1) odd++; 
            else even++; 
        } 
        return min(odd, even); 
    } 
}; 

int main() { 
    Solution ob; 
    vector<int> v1 = {2,2,2,3,3}; 
    cout << ob.minCostToMoveChips(v1); 
}

ইনপুট

[2,2,2,3,3]

আউটপুট

2
  1. CSS দিয়ে কন্ট্যাক্ট চিপ তৈরি করার পদ্ধতি

  2. C++-এ এক্সপ্রেশন ট্রি (Expression Tree) উদাহরণসহ

  3. C++-এ সর্বোচ্চ পানি ধারণকারী কন্টেইনার (Container With Most Water)

  4. C++-এ ৩n স্লাইস পিজা (Pizza With 3n Slices)