Java - Kiểm tra mảng một chiều vừa nhập có phải là mảng đối xứng hay không?
Viết chương trình thực hiện các công việc:
- Nhập liệu cho mảng một chiều có n phần tử nguyên (n > 0) từ bàn phím.
- Kiểm tra mảng một chiều vừa nhập có đối xứng hay không?
Biết rằng: Mảng một chiều A có n phần tử là mảng đối xứng nếu mọi phần tử của mảng thỏa mãn A[i] = A[n - i - 1] với i = 0, 1,..., n - 1.
Ví dụ: Các mảng một chiều sau đây là đối xứng:
A[0] = 1 A[1] = 2 A[2] = 3 A[3] = 2 A[4] = 1
B[0] = 1 B[1] = 2 B[2] = 3 B[3] = 3 B[4] = 2 B[5] = 1
Các mảng một chiều sau đây là không đối xứng:
C[0] = 1 C[1] = 2 C[2] = 3 C[3] = 1 C[4] = 2
D[0] = 1 D[1] = 2 D[2] = 3 D[3] = 4 D[4] = 2 D[5] = 1
Bài giải
-------------------- ######## --------------------
public static void main(String[] args) {
int n, kt = 1;
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Nhập số phần tử của mảng: ");
n = scanner.nextInt();
} while (n <= 0);
int A[] = new int[n];
System.out.println("Nhập giá trị cho các phần tử của mảng: ");
for (int i = 0; i < n; i++) {
System.out.print("A[" + i + "] = ");
A[i] = scanner.nextInt();
}
// kiểm tra mảng đảo ngược
// dùng vòng lặp for duyệt i = 0 đến i < n / 2
// nếu A[i] != A[n - i -1]
// thì mảng đó không phải mảng đối xứng
for (int i = 0; i < n / 2; i++) {
if (A[i] != A[n - i - 1]) {
kt = 0;
break;
}
}
if (kt == 0) {
System.out.println("Mảng một chiều vừa nhập không là mảng đối xứng");
} else {
System.out.println("Mảng một chiều vừa nhập là mảng đối xứng");
}
}
Giải thích hoạt động của chương trình trên:

Bước 1: Dùng biến kt để kiểm tra, ban đầu kt = 1 (xem như mảng đối xứng).
Bước 2: Vòng lặp for sẽ duyệt từ phần tử đầu tiên đến phần tử có chỉ số n / 2. Với mỗi lần lặp, so sánh phần tử ở nửa dãy đầu với phần tử đối xứng với nó ở nửa dãy cuối (tức phần tử ở vị trí i so sánh với phần tử ở vị trí n - i - 1), nếu 2 phần tử đó có giá trị không bằng nhau thì trả biến kt = 0 (tức nhận giá trị sai, nghĩa là mảng không đối xứng) và kết thúc lặp.
Bước 3: Khi ra khỏi vòng lặp, căn cứ vào giá trị biến kt để kết luận: nếu kt = 0 thì mảng một chiều không đối xứng, nếu kt = 1 thì mảng một chiều đối xứng.
Bài viết này được đăng tại [free tuts .net]
Kết quả sau khi biên dịch chương trình:
Nếu mảng nhập vào là mảng đối xứng:
Nếu mảng nhập vào không là mảng đối xứng:
Câu hỏi thường gặp liên quan:
- Java - Nhập mảng và thực hiện các thao tác trên mảng.
- Java - Sắp xếp mảng tăng dần sử dụng phương pháp nổi bọt (Bubble sort).
- Java - Tìm kiếm một phần tử sử dụng trong mảng sử dụng thuật tìm kiếm nhị phân.
- Java - Kiểm tra mảng một chiều vừa nhập có phải là mảng đối xứng hay không?
- Java - Tìm và in ra màn hình số lượng số nguyên lẻ, số lượng số nguyên chẵn trong mảng.
- Java - Xóa phần tử có giá trị k trong mảng (k nhập từ bàn phím).
- Java - Nhập mảng và thực hiện tách các số chẵn và lẻ trong mảng sang hai mảng khác.
- Java - Tách một nửa đầu của mảng ban đầu sang mảng thứ nhất và nửa còn lại sang mảng thứ hai.
- Java - Viết chương trình hiển thị các phần tử chia hết cho 5 trong mảng.
- Java - Đếm số lần xuất hiện của 1 phần tử được nhập từ bàn phím.
- Java - Bài tập tổng hợp các thao tác trên mảng.
- Java - Viết chương trình nhập mảng sao cho không có phần tử nào trùng nhau.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng