Kiểm tra dãy đối xứng

Xem PDF

Điểm: 100 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một mảng \(n\) số nguyên. Kiểm tra xem mảng có đối xứng không. Mảng đối xứng là mảng khi viết theo chiều xuôi hay ngược lại đều được kết quả giống nhau.

Đầu vào: Dòng đầu tiên là số nguyên \(n\) \((1 \le n \le 10^6)\). Dòng thứ 2 là mảng \(n\) số nguyên, các số cách nhau bởi dấu cách, trị tuyệt đối của
các số này không quá \(10^{18}\).

Đầu ra: Nếu mảng đối xứng in ra “TRUE”, nếu không in ra “FALSE”.

Example

Test 1

Input
5
5 4 4 3 2
Output
FALSE

Test 2

Input
3
4 2 4
Output
TRUE

Bình luận


  • 0
    nongducquan    5:36 p.m. 11 Tháng 7, 2024

    Bài này tương tự như bài kiểm tra xâu đối xứng
    Cách 1 : ta duyệt từ cuối lên đầu mảng a rồi gán giá trị đó cho mảng b
    duyệt từ 1->n nếu a[i] != b[i] thì in ra false rồi return 0 luôn
    nếu hết vòng for đó còn chạy thì in ra true
    Cách 2 : dùng 2 con trỏ l = 1, r = n kiểm tra nếu a[l] != a[r] thì kết thúc luôn
    điều kiện là while (l <= r) mỗi bước nhãy l++ và r--
    Cách 3 : duyệt từ 1 -> n/2 kiểm tra nếu a[i] != a[n-i+1] thì kết thúc ngược lại thì là true
    Code :

    include<bits/stdc++.h>

    define ll long long

    using namespace std;
    ll n, a[1000003];

    int main() {
    cin>>n;
    for (int i = 1; i <= n; i++) cin>>a[i];
    for (int i = 1; i <= n/2; i++) {
    if (a[i] != a[n-i+1]) {
    cout<<"FALSE";
    return 0;
    }
    }
    cout<<"TRUE";
    }

    • 9 bình luận nữa