用python完成:给定一个数组,判断其中的数据序列是否左右对称:偶数个数时,左右两半部分正好逆序;奇数时,除中间位置数外,左右逆序。第一行N表示一共有N个测试用例,也即接下来的输入数据共有N行。 接下来的每一行表示一个输入数组,第一个数字n表示该数组的元素个数,后面紧跟着n个数,中间都以空格隔开。是逆序输出YES,否则输出NO(注意都是大写,小写判错)
时间: 2024-03-09 10:47:54 浏览: 197
数据结构C语言版严蔚敏著数据结构实验指导.doc
好的,我可以帮你解决这个问题。以下是Python代码实现:
```python
N = int(input()) # 读取测试用例数
for i in range(N):
arr = list(map(int, input().split())) # 读取输入数组
n = arr[0] # 数组元素个数
if n % 2 == 0: # 偶数情况
left = arr[1:n//2+1] # 左半部分
right = arr[n//2+1:] # 右半部分
else: # 奇数情况
left = arr[1:n//2] # 左半部分
right = arr[n//2+1:] # 右半部分
right.reverse() # 将右半部分逆序
if left == right: # 判断左右部分是否相等
print("YES")
else:
print("NO")
```
解释一下代码:
首先读取测试用例数N,然后利用循环处理每个测试用例。对于每个测试用例,先读取输入的数组arr,其中第一个元素n表示数组元素个数,后面n个数为数组元素。
根据题目要求,先将数组拆成左右两部分。如果元素个数n为偶数,则左半部分为arr[1:n//2+1],右半部分为arr[n//2+1:];如果n为奇数,则左半部分为arr[1:n//2],右半部分为arr[n//2+1:]。
然后将右半部分逆序,利用reverse()函数实现。
最后,判断左半部分和逆序后的右半部分是否相等。如果相等,则输出"YES";否则输出"NO"。
阅读全文