একটি 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