对称序列判断

Posted 平行线不会相交

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对称序列判断相关的知识,希望对你有一定的参考价值。

题目描述

给定一个数组,判断其中的数据序列是否左右对称:偶数个数时,左右两半部分正好逆序;奇数时,除中间位置数外,左右逆序

输入格式

第一行N表示一共有N个测试用例,也即接下来的输入数据共有N行。

接下来的每一行表示一个输入数组,第一个数字n表示该数组的元素个数,后面紧跟着n个数,中间都以空格隔开

输出格式

是逆序输出YES,否则输出NO(注意都是大写,小写判错)

样例输入

 

3
5 1 2 3 2 1
4 1 1 1 2
6 2 1 2 2 1 2

样例输出

 

YES
NO
YES
#include <iostream>
using namespace std;
int f(int a[], int m, int i,int j);
int main()
{
    int n;
    cin >> n;
    while (n--)
    {
        int m;
        cin >> m;
        int *a = new int[m];
        for (int i = 0;i < m; i++)
            cin >> a[i];
        if (f(a,m,0,m-1)) cout <<"YES" << endl;
        else  cout <<"NO" << endl;
        delete[] a;
    }
    return 0;
}
int f(int a[], int m, int i,int j)
{
    if (m == 1 || m == 0)
        return 1;
    if (a[i] == a[j])
    {
        m = m - 2;
        f(a, m, ++i,--j);
    }
    else 
        return 0;
    
}

 

以上是关于对称序列判断的主要内容,如果未能解决你的问题,请参考以下文章

判断二叉树是否对称的代码

判断对称二叉树 python代码

20160220.CCPP体系详解(0030天)

剑指offer28题

对称密码体制根据对明文加密方式的不同分为分组密码和序列密码

第03次作业-栈和队列