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.