diff options
sem 8
1 files changed, 49 insertions, 0 deletions
| -rw-r--r-- | Sem. 08/task3.cpp | 49 |
diff --git a/Sem. 08/task3.cpp b/Sem. 08/task3.cpp new file mode 100644 index 0000000..6d7d209 --- /dev/null +++ b/Sem. 08/task3.cpp @@ -0,0 +1,49 @@ +#include <iostream> +using namespace std; + +const int SIZE = 30; +bool isSubarrayPalindrome(int arr[SIZE], int startIndex, int endIndex) +{ + while (startIndex < endIndex) + { + if (arr[startIndex] != arr[endIndex]) + return false; + startIndex++; + endIndex--; + } + return true; +} +void print(int arr[SIZE]) +{ + for (int i = 0; i < SIZE; i++) + cout << arr[i]; + cout << endl; +} + +int LongestPalindromicSubarray(int arr[SIZE], int n) +{ + int currentSize = n; + + int startIndex = 0; + int endIndex = startIndex + currentSize-1; + while (true) + { + if (isSubarrayPalindrome(arr, startIndex, endIndex)) + return endIndex - startIndex + 1; + startIndex++; + endIndex++; + if (endIndex == n)//last iteration + { + currentSize--; + startIndex = 0; + endIndex = startIndex + currentSize - 1; + } + } +} +int main() +{ + + int arr[SIZE] = {1,4,3,2,3}; + cout << LongestPalindromicSubarray(arr, 5); + +} |
