C++数组的比特尼克性检查程序
给定一个包含N个整数的数组arr[N],任务是检查给定数组是否为比特尼克数组。如果给定数组是比特尼克数组,则打印“Yes its a bitonic array”,否则打印“No its not a bitonic array”。
比特尼克数组是指数组先严格递增,然后严格递减的数组。
例如,数组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
下面使用的方法如下,用于解决问题
迭代数组的每个元素,并检查前一个元素是否小于当前元素。
如果前一个元素不小于当前元素,则中断。
检查前一个元素是否大于当前元素,否则返回false并退出。
如果到达数组的末尾,则返回true。
算法
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
广告