ধরুন আমাদের n উপাদান সহ একটি অ্যারে A আছে। n ধনাত্মক পূর্ণসংখ্যা সহ একটি পাসওয়ার্ড আছে বিবেচনা করুন. আমরা অ্যারেতে নিম্নলিখিত ক্রিয়াকলাপগুলি প্রয়োগ করি। ক্রিয়াকলাপগুলি হল দুটি সন্নিহিত উপাদানগুলিকে অপসারণ করা যা একে অপরের মতো নয়, তারপরে তাদের যোগফল সেই স্থানে স্থাপন করা। সুতরাং এই ক্রিয়াকলাপটি অ্যারের আকার 1 দ্বারা হ্রাস করবে। এই ক্রিয়াকলাপগুলি সম্পাদন করার পরে আমাদের অ্যারের সম্ভাব্য সর্বনিম্ন দৈর্ঘ্য খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি A =[2, 1, 3, 1] এর মতো হয় তবে আউটপুট হবে 1, কারণ আমরা যদি (1, 3) নির্বাচন করি তবে অ্যারেটি হবে [2, 4, 1], তারপর বেছে নিন (2, 4) অ্যারে তৈরি করতে [6, 1], তারপর [7] পেতে শেষ দুটি নির্বাচন করুন।
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
n := size of A Define one set se for initialize i := 0, when i < n, update (increase i by 1), do: insert A[i] into se if size of se is same as 1, then: return n Otherwise return 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A) { int n = A.size(); set<int> a; for (int i = 0; i < n; i++) { a.insert(A[i]); } if (a.size() == 1) return n; else return 1; } int main() { vector<int> A = { 2, 1, 3, 1 }; cout << solve(A) << endl; }
ইনপুট
{ 2, 1, 3, 1 }
আউটপুট
1