Cho mảng arr[n], kiểm tra palindrome bằng vòng lặp (không đệ quy).
Duyệt hai con trỏ: i từ đầu, j từ cuối. So sánh arr[i] và arr[j] cho đến khi gặp nhau.
Ví dụ
Input: {1,0,0,1} → Output: Mảng đối xứng
Input: {1,2,3,4,5} → Output: Mảng không đối xứng
Mã nguồn C
#include <stdio.h>
int pallindrome(int arr[], int n) {
int i, j, flag = 0;
for (i = 0, j = n-1; i < n/2 && j >= n/2; i++, j--) {
if (arr[i] != arr[j]) { flag = 1; break; }
}
return flag == 0 ? 1 : 0;
}
int main() {
int arr[] = {1, 0, 2, 3, 2, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
if (pallindrome(arr, n))
printf("Mảng là đối xứng (Palindrome)\n");
else
printf("Mảng không đối xứng\n");
return 0;
}
Kết quả
Mảng không đối xứng