MOOC清华《程序设计基础》第5章第1题:判断数列的对称性
2017-07-14 20:36
274 查看
题目描述
给定一个数组,判断其中的数据序列是否左右对称:偶数个数时,左右两半部分正好逆序;奇数时,除中间位置数外,左右逆序
输入格式
第一行N表示一共有N个测试用例,也即接下来的输入数据共有N行。
接下来的每一行表示一个输入数组,第一个数字n表示该数组的元素个数,后面紧跟着n个数,中间都以空格隔开
输出格式
是逆序输出YES,否则输出NO(注意都是大写,小写判错)
样例输入
样例输出
测试结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/fd785484d923871d06d78ff4fd912e45)
给定一个数组,判断其中的数据序列是否左右对称:偶数个数时,左右两半部分正好逆序;奇数时,除中间位置数外,左右逆序
输入格式
第一行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 main() { int N = 1; cin >> N; int *length = new int ; //必须单独存放,这样在数据处理上就化难为易了 int **array = new int * ; for (int i = 0; i < N; i++) { cin >> length[i]; array[i] = new int[length[i]]; for (int j = 0; j < length[i]; j++) cin >> array[i][j]; } void Symmetry(int *a, int n); for(int i = 0; i < N; i++) Symmetry(array[i], length[i]); for (int i = 0; i < N; i++) delete[] array[i]; //注意释放二维数组的技巧,“深度释放内存” delete[] array; delete[] length; return 0; } void Symmetry(int *a, int n) { int middle, i, j; if(n % 2 == 0) { middle = n / 2; for(i = 0, j = n - 1; i <= middle - 1 && j >= middle; ) if(a[i] == a[j]) i++, j--; else { cout << "NO" << endl; break; } if(i - j == 1) //这个条件是关键 cout << "YES" << endl; } else { middle = n / 2; for(i = 0, j = n - 1; i < middle && j > middle;) if(a[i] == a[j]) i++, j--; else { cout << "NO" << endl; break; } if(i - j == 0) //这个条件是关键 cout << "YES" << endl; } }
测试结果:
相关文章推荐
- MOOC清华《程序设计基础》第3章第1题:谁是大块头
- MOOC清华《程序设计基础》第5章第4题:用递归算法实现选择排序
- MOOC清华《程序设计基础》第8章第1题:代码补全-输出链表的奇数值项
- MOOC清华《程序设计基础》第5章:八皇后问题-代码一
- MOOC清华《程序设计基础》第6章:三种递推方法求兔子数列问题(斐波那契数列)
- MOOC清华《程序设计基础》第1章第1题:三角形求面积
- MOOC清华《程序设计基础》第5章:快速排序(不分配动态空间-算法一)
- MOOC清华《程序设计基础》期末考试第1题:解三元一次方程
- MOOC清华《程序设计基础》第5章:快速排序(不分配动态空间-算法二)
- MOOC清华《程序设计基础》第5章第2题:破损棋盘的八皇后问题
- MOOC清华《程序设计基础》第4章第1题:找出ab间的素数(用筛法做)
- MOOC清华《程序设计基础》第5章第5题:用递归算法实现数组求和
- MOOC清华《程序设计基础》第5章:八皇后问题-代码二
- MOOC清华《程序设计基础》第5章第3题:用递归算法求最大公约数
- MOOC清华《程序设计基础》第9章第1题:模拟汇编语言编译器
- MOOC清华《程序设计基础》第5章:N皇后问题(带矩阵输出)
- MOOC清华《程序设计基础》第5章:求n的阶乘(用枚举法做)
- MOOC清华《程序设计基础》第5章:数字旋转方阵的填充-算法二
- MOOC清华《程序设计基础》第5章:求n的阶乘(用递推法做)
- MOOC清华《程序设计基础》第5章:快速排序(分配动态空间)