Mảng đối xứng là mảng có các phần tử trong mảng đối xứng qua trục giữa sẽ luôn bằng nhau.
Đối với mảng có số lượng phần tử chẵn, ta sẽ chia mảng ra làm 2 đoạn đúng bằng nhau và trục sẽ cắt ngang giữa 2 đoạn…ta sẽ lấy từng cặp đối xứng qua trục.
Đối với mảng có số phần tử lẻ, phần tử nằm ở giữa sẽ là trục, phần tử này ta không cần so sánh đối xứng hoặc só sánh thì sẽ so sánh với chính nó.

Ý tưởng của bài toán sẽ như sau, Ta sẽ duyệt vòng lặp ở phía nửa bên trái của mảng sau đó so sánh với phần tử đối xứng bên phải mảng. Nếu tất cả các cặp số đều bằng nhau thì kết luận mảng là đối xứng, ngược lại kết luận mảng không đối xứng.
Chương trình kiểm tra mảng đối xứng trong lập trình C/C++
#include <stdio.h> #include <stdbool.h> bool checkDoiXung(int n, int a[]){ int i; int dem = 0; for(i = 0;i<n;i++){ if(a[i] != a[n-i-1]){ dem++; } } if(dem == 0) printf("\n\nMang doi xung nhau"); else printf("\n\nMang khong doi xung nhau"); } int main() { int n; printf("Nhap so phan tu: "); scanf("%d,",&n); int a[n]; int i; for(i = 0; i<n;i++){ printf("a[%d] = ",i); scanf("%d", &a[i]); } printf("\n\nMang vua nhap:\n"); for(i = 0; i<n;i++){ printf("%d ", a[i]); } checkDoiXung(n, a); }