ইনপুট হিসাবে তিনটি ভেরিয়েবল সাইজ, 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