एन पूर्णांकों की एक सरणी गिरफ्तारी [एन] को देखते हुए, कार्य यह जांचना है कि दिया गया सरणी बिटोनिक है या नहीं। यदि दी गई सरणी बिटोनिक है तो "हां यह एक बिटोनिक सरणी है" प्रिंट करें, अन्यथा प्रिंट करें "नहीं यह एक बिटोनिक सरणी नहीं है"।
एक बिटोनिक सरणी तब होती है जब सरणी पहले सख्ती से बढ़ते क्रम में होती है और फिर सख्ती से घटते क्रम में होती है।
इस सरणी की तरह arr[] ={1, 2, 3, 4, 2, -1, -5} एक बिटोनिक सरणी है, क्योंकि 4 तक यह सख्ती से बढ़ते क्रम में है और 4 के बाद यह सख्ती से घटते क्रम में है।पी>
इनपुट
arr[] = {1, 3, 5, 4, 2, 0}
आउटपुट
Yes its a bitonic array
स्पष्टीकरण
1< 3 < 5 > 4 > 2 >0, so yes it is a bitonic array.
इनपुट
arr[] = {1, 2, 3, 4, 5, 0, -1, -2, 6, -4}
आउटपुट
No its not a bitonic array
समस्या को हल करने के लिए नीचे उपयोग किया गया दृष्टिकोण इस प्रकार है
-
किसी सरणी के प्रत्येक तत्व को पुनरावृत्त करें और जांचें कि पिछला तत्व वर्तमान तत्व से छोटा है।
-
जब पिछला तत्व वर्तमान तत्व विराम से छोटा न हो।
-
जांचें कि पिछला तत्व वर्तमान से बड़ा है या नहीं, अन्यथा झूठी वापसी करें और बाहर निकलें।
-
यदि किसी सरणी के अंत तक पहुँच जाता है तो सत्य वापस आ जाता है।
एल्गोरिदम
Start Step 1→ Declare array to check for bitonicity of an array int check(int arr[], int size) declare int i, j Loop For i = 1 and i <size and i++ IF (arr[i] > arr[i - 1]) Continue End IF (arr[i] <= arr[i - 1]) break End IF(i == size - 1) return 1 End Loop For (j = i + 1 and j < size and j++ IF (arr[j] < arr[j - 1]) Continue End IF (arr[j] <= arr[j - 1]) break End End Set i = j IF (i != size) return 0 End return 1 Step 2→ In main() Declare int arr[] = { -3, 9, 11, 20, 17, 5, 1 } Declare int size = sizeof(arr) / sizeof(arr[0]) Do (check(arr, size) == 1) ? cout << "Yes its a bitonic array" : cout << "no its not a bitonic array" Stop
उदाहरण
#include <bits/stdc++.h> using namespace std; //function to check bitonic or not int check(int arr[], int size){ int i, j; for (i = 1; i < size; i++){ if (arr[i] > arr[i - 1]) continue; if (arr[i] <= arr[i - 1]) break; } if (i == size - 1) return 1; for (j = i + 1; j < size; j++){ if (arr[j] < arr[j - 1]) continue; if (arr[j] >= arr[j - 1]) break; } i = j; if (i != size) return 0; return 1; } int main(){ int arr[] = { -3, 9, 11, 20, 17, 5, 1 }; int size = sizeof(arr) / sizeof(arr[0]); (check(arr, size) == 1) ? cout << "Yes its a bitonic array" : cout << "no its not a bitonic array"; return 0; }
आउटपुट
यदि उपरोक्त कोड चलाया जाता है तो यह निम्न आउटपुट उत्पन्न करेगा -
Yes its a bitonic array