একটি 2D অ্যারে arr[][][] দেওয়া হয়েছে যেখানে অন্তর এবং একটি সংখ্যা 'মান' রয়েছে। লক্ষ্য হল arr-এ উপস্থিত ব্যবধানের সংখ্যা খুঁজে বের করা যার মধ্যে মান রয়েছে। উদাহরণস্বরূপ ব্যবধান হল [ [ [ [ 1, 5 ] , [ 3, 7 ] ] এবং মান=4 তাহলে এটি এই উভয় ব্যবধানে থাকে এবং গণনা হবে 2।
উদাহরণস্বরূপ
ইনপুট
arr[4][2] = { { 1, 20 }, { 12, 25 }, { 32, 40 }, { 15, 18 } } value=16
আউটপুট
Count of number of intervals in which a given value lies are: 3
ব্যাখ্যা
The value 16 lies between 1−20, 12−25 and 15−18
ইনপুট
arr[4][2] = {{ 1, 20 }, { 20,30 }, { 30, 40 }, { 40, 50 }} value=60
আউটপুট
Count of number of intervals in which a given value lies are: 0
ব্যাখ্যা
The value 60 is larger than all maximum ranges of intervals present in arr[][].
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি −
এই পদ্ধতিতে আমরা arr-এ উপস্থিত রেঞ্জের সমস্ত সংখ্যার জন্য একটি ফ্রিকোয়েন্সি অ্যারে arr_2[] তৈরি করব। সুতরাং প্রতিটি রেঞ্জের arr[i][0] এবং arr[i][1] এর ফ্রিকোয়েন্সি arr_2[ arr[i][0 বা 1] ] এ বৃদ্ধি পাবে। শেষে আমরা ফ্রিকোয়েন্সি অ্যারেকে arr_2[i]=arr_2[i]+arr_2[i−1] দিয়ে আপডেট করব কারণ i-1-এর চেয়ে কম সংখ্যাগুলিও i থেকে কম হবে তাই ফ্রিকোয়েন্সি যোগ করা হবে। এইভাবে আমরা arr_2[মান] পাব সমস্ত রেঞ্জ হিসাবে যেখানে মান রয়েছে।
-
একটি পূর্ণসংখ্যা বিন্যাস নিন arr[][] সমন্বিত পরিসর
-
ইনপুট হিসাবে একটি পূর্ণসংখ্যা মান নিন।
-
ফাংশন intervals_values(int arr[][2], int size, int value) arr এবং মান নেয় এবং একটি প্রদত্ত মান থাকা অন্তরের সংখ্যার একটি গণনা প্রদান করে।
-
ফ্রিকোয়েন্সি অ্যারে নিন arr_2[]।
-
INT_MAX এবং INT_MIN হিসাবে কম এবং সর্বোচ্চ নিন।
-
ট্রাভার্স arr[][] i=0 থেকে i
এর জন্য লুপ ব্যবহার করে -
টেম্পকে রেঞ্জের বাম হিসাবে নিন এবং এর ফ্রিকোয়েন্সি arr_2[temp>
এ বৃদ্ধি করুন -
temp_2 কে ব্যাপ্তির ডানদিকে নিন এবং এর ফ্রিকোয়েন্সি arr_2[temp_2+1]
এ বৃদ্ধি করুন -
যদি temp
সর্বোচ্চ সেট সর্বোচ্চ temp_2 হিসেবে। -
ট্র্যাভার্স ফ্রিকোয়েন্সি অ্যারে এবং এটি আপডেট করুন arr_2[i]=arr_2[i]+arr_2[i+1]।
-
শেষে ফলাফল হিসাবে arr_2[মান] ফেরত দিন।
উদাহরণ
#include<bits/stdc++.h> using namespace std; #define max 1000 int intervals_values(int arr[][2], int size, int value){ int arr_2[max]; int low = INT_MAX; int highest = INT_MIN; for(int i = 0; i < size; i++){ int temp = arr[i][0]; arr_2[temp] = arr_2[temp] + 1; int temp_2 = arr[i][1]; arr_2[temp_2 + 1] = arr_2[temp_2 + 1] − 1; if(temp < low){ low = temp; } if(temp_2 > highest){ highest = temp_2; } } for (int i = low; i <= highest; i++){ arr_2[i] = arr_2[i] + arr_2[i − 1]; } return arr_2[value]; } int main(){ int arr[4][2] = { { 3, 20 }, { 2, 13 }, { 25, 30 }, { 15, 40 } }; int size = sizeof(arr) / sizeof(arr[0]); int value = 28; cout<<"Count the number of intervals in which a given value lies are: "<<intervals_values(arr, size, value); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount the number of intervals in which a given value lies are: 18830628