T607196 回文数组

解题思路

  1. 问题分析

    • 回文数组的定义是数组正序和逆序完全相同。

    • 需要检查数组的前半部分是否和后半部分对称。

  2. 关键步骤

    • 读取数组长度n和数组元素。

    • 使用双指针法(或对称位置比较法)检查数组是否对称:

      • 比较a[i]a[n-1-i](即首尾对应位置的元素)。

      • 如果所有对应位置的元素都相等,则是回文数组;否则不是。

  3. 代码逻辑

    • 使用数组a存储输入的元素。

    • 初始化标志位ftrue,表示假设数组是回文的。

    • 遍历数组的前半部分,比较对称位置的元素。

    • 如果发现不相等的情况,立即标记ffalse并终止检查。

    • 根据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;
      }

       

posted @ 2025-05-15 20:01  乐意丘  阅读(70)  评论(0)    收藏  举报