কম্পিউটার

C++ এ বিভিন্ন মানের সাথে পরপর উপাদান থাকা অ্যারের সংখ্যা


ইনপুট হিসাবে তিনটি ভেরিয়েবল সাইজ, max_val, last_element দেওয়া হয়েছে। লক্ষ্য হল বিভিন্ন অ্যারেগুলির গণনা খুঁজে বের করা যা এমনভাবে তৈরি করা যেতে পারে যাতে তাদের আকারের উপাদান থাকে, 1 এবং max_val এর মধ্যে উপাদান থাকে এবং প্রথম উপাদানটি সর্বদা 1 হয় এবং শেষ উপাদানটি সর্বদা max_val হয়। এছাড়াও নিশ্চিত করুন যে কোন দুটি পরপর উপাদান একই নয়।

আসুন উদাহরণ দিয়ে বোঝা যাক।

উদাহরণস্বরূপ

ইনপুট - আকার =5, সর্বোচ্চ_ভাল =3, শেষ_ উপাদান =3

আউটপুট - বিভিন্ন মান সহ পরপর উপাদান সম্বলিত অ্যারের সংখ্যা হল:5

ব্যাখ্যা - অ্যারেগুলো হবে:-

[ 1, 2, 3, 1, 3 ], [ 1, 2, 3, 2, 3 ], [ 1, 2, 1, 2, 3 ], [ 1, 3, 1, 2, 3 ], [ 1 , 3, 2, 1, 3]।

ইনপুট - আকার =3 সর্বোচ্চ_ভাল =2 শেষ_উপাদান =2

আউটপুট - বিভিন্ন মান সহ পরপর উপাদান সম্বলিত অ্যারের সংখ্যা হল:0

ব্যাখ্যা - 3টি উপাদানের সাথে এবং [ 1, _, 2 ] ধারাবাহিক উপাদানের সাথে কোনো অ্যারে সম্ভব নয় কারণ আমরা মধ্যম উপাদানের জন্য 1 বা 2 ছাড়া আর কিছু পূরণ করতে পারি না এবং এটি পরপর বিভিন্ন উপাদানের শর্ত লঙ্ঘন করবে৷

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

  • এই পদ্ধতিতে আমরা ডায়নামিক প্রোগ্রামিং এবং কম্বিনেটরিক্স ব্যবহার করব এই ধরনের অ্যারে গণনা খুঁজে বের করার জন্য।
  • প্রথম এবং শেষ উপাদানগুলি 1 এবং শেষ_এলিমেন্ট হিসাবে স্থির করা হবে। যেকোন আকারের অ্যারের জন্য এটি পূরণ করার উপায় শুধুমাত্র আকার-2 উপাদানের জন্য হবে।
  • [1 থেকে max_val] উপাদান পূরণের জন্য সাইজ-2 জায়গায় পূরণ করতে হবে। উপায় হবে উপায়(max_val)=ways(size) / (max_val - 1)
  • প্রতিটি পরিসর 1 থেকে i এর জন্য, উপায়গুলি হবে ways(i)=ways(size) / (max_val - 1) [ ways(size) =উপায়গুলির সংখ্যা যা শেষ উপাদানটি সংখ্যা 2 থেকে max_val দিয়ে পূরণ করা যেতে পারে।<
  • যদি last_element 1 হয় তাহলে ways হবে ways(size-1) কারণ শেষ উপাদান শুধুমাত্র 1 হতে পারে।
  • দ্বিতীয় শেষ উপাদান সর্বদা 1 এবং max_val এর মধ্যে হতে পারে।
  • যদি দ্বিতীয় শেষ উপাদানটি 1 না হয় তাহলে উপায় হবে (max_val-2)* ways(i-1) as arri 1 হতে পারে না বা arri-1
  • যদি দ্বিতীয় শেষ উপাদানটি 1 হয় তাহলে উপায় হবে (max_val-1)*ways(i-1) arri-1 হল 1 এবং arri-2 1 নয়।
  • উপায়(i) হবে :- (max_val - 2)* ways(i-2) + (max_val-2)* ways(i-1)
  • ভেরিয়েবল সাইজ, max_val এবং last_element ইনপুট হিসাবে নিন।
  • ফাংশন diff_val(int size, int max_val, int last_element) সমস্ত ইনপুট নেয় এবং বিভিন্ন মান সহ পরপর উপাদান থাকা অ্যারের সংখ্যা ফেরত দেয়।
  • প্রাথমিক গণনাকে 0 হিসাবে নিন।
  • অ্যারে অ্যারে নিন [Max_N] ={ 0 } অ্যারে পূরণ করার উপায় সংরক্ষণের গণনা। 0 দিয়ে arr[0] এবং 1 দিয়ে arr[1] শুরু করুন।
  • i=2 থেকে i
  • temp_1 =(max_val - 2) * arr[i - 1] এবং temp_2 =(max_val - 1) * arr[i - 2] নিন
  • সেট arr[i] =temp_1 + temp_2।
  • ক্ষেত্রে last_element ==1 তারপর গণনা =(max_val - 1) * arr[size - 2] সেট করুন।
  • অন্যথায় arr[size - 1] ফেরত দিন।
  • শেষে ফলাফল হিসাবে গণনা করুন।

উদাহরণ

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

int diff_val(int size, int max_val, int last_element) {
   int count = 0;
   int arr[Max_N] = {
      0
   };
   arr[0] = 0;
   arr[1] = 1;
   for (int i = 2; i < size; i++) {
      int temp_1 = (max_val - 2) * arr[i - 1];
      int temp_2 = (max_val - 1) * arr[i - 2];
      arr[i] = temp_1 + temp_2;
   }
   if (last_element == 1) {
      count = (max_val - 1) * arr[size - 2];
   } else {
      return arr[size - 1];
   }
   return count;
}
int main() {
   int size = 5;
   int max_val = 3;
   int last_element = 3;
   cout << "Count of arrays having consecutive element with different values are: " << diff_val(size, max_val, last_element);
   return 0;
}

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে

আউটপুট

Count of arrays having consecutive element with different values are: 5

  1. C++ এ K বিভিন্ন পূর্ণসংখ্যা সহ সাবরে

  2. C++ এ একই অঙ্কের সমষ্টিযুক্ত দুটি অ্যারে থেকে স্বতন্ত্র জোড়া গণনা করুন

  3. C++ এ অনন্য সংখ্যার সাথে সংখ্যা গণনা করুন

  4. C++-এ b-এর চেয়ে বেশি উপসর্গ