Đ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
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