T607196 回文数组
解题思路
-
问题分析:
-
回文数组的定义是数组正序和逆序完全相同。
-
需要检查数组的前半部分是否和后半部分对称。
-
-
关键步骤:
-
读取数组长度
n和数组元素。 -
使用双指针法(或对称位置比较法)检查数组是否对称:
-
比较
a[i]和a[n-1-i](即首尾对应位置的元素)。 -
如果所有对应位置的元素都相等,则是回文数组;否则不是。
-
-
-
代码逻辑:
-
使用数组
a存储输入的元素。 -
初始化标志位
f为true,表示假设数组是回文的。 -
遍历数组的前半部分,比较对称位置的元素。
-
如果发现不相等的情况,立即标记
f为false并终止检查。 -
根据
f的值输出结果。#include<bits/stdc++.h> using namespace std; int main() { int a[1005]; // 定义数组存储输入的元素 int n; // 数组长度 // 输入数组长度和元素 cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } bool f = true; // 标志位,初始假设数组是回文的 // 检查数组是否回文 for (int i = 0; i < n / 2; i++) { // 比较对称位置的元素 if (a[i] != a[n - 1 - i]) { f = false; // 发现不对称,标记为false break; // 提前终止检查 } } // 输出结果 if (f) { cout << "YES"; } else { cout << "NO"; } return 0; }
-

浙公网安备 33010602011771号