Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 08 / task3.cpp
diff options
context:
space:
mode:
1 files changed, 49 insertions, 0 deletions
-rw-r--r--Sem. 08/task3.cpp49
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);
+
+}