PAT 1101
来源:互联网 发布:mac ext4 读写 编辑:程序博客网 时间:2024/05/20 22:35
1、题目链接
https://www.patest.cn/contests/pat-a-practise/1101
2、题意分析
(1)题意:从给出的一串数字中找出可以作为快速排序的主元。
(2)分析:如果我们暴力一层一层搜索的话,则发现时间会超时。那么我们可以这么处理:
我们思考,对于一串数字,如果该数字是主元的话,那么该数左边的数都小于等于它,该数右边的数都大于它。所以我们可以使用两次循环。(注意是两次,不是两层),第一次判断出当前数是否比之前的所有数都大。第二次遍历判断是否比后面的数都小。
3、源代码
(1)暴力算法
#include <stdio.h>#define size 100001int main(){ int n; scanf("%d",&n); int i ,j ,max = 0,min = 1000000000; int array[size][3];//0为本值,1为是否比前面数都大,2为是否比后面数都小 for (i = 0;i<n;i++){ scanf("%d",&array[i][0]); if(array[i][0] > max){ array[i][1] = i; max = array[i][0];//更新max值 } } for (i = n-1;i >=0;i--){ if(array[i][0] < min){ array[i][2] = i; min = array[i][0];//更新max值 } } int total = 0; int record[size]; for(i = 0;i<n;i++){ if(array[i][1] == i && array[i][2] == i){ record[total++] = array[i][0]; } } printf("%d\n",total); for(i = 0;i<total;i++){ printf("%d",record[i]); if(i!=total-1){ printf(" "); } }}/**51 3 2 4 5101 2 3 4 5 6 7 8 9 1021 2*/(2)第二种思维
#include <stdio.h>#define size 100001int main(){int n;scanf("%d",&n);int i ,j ,max = 0,min = 1000000002;int array[size][3];//0为本值,1为是否比前面数都大,2为是否比后面数都小 for (i = 0;i<n;i++){scanf("%d",&array[i][0]);if(array[i][0] >= max){array[i][1] = -1;//需要使用一个特殊的值(-1),用来避免数值恰好相等 max = array[i][0];//更新max值 }} for (i = n-1;i >=0;i--){if(array[i][0] <= min){array[i][2] = -1;min = array[i][0];//更新max值 }} int total = 0; int record[size];for(i = 0;i<n;i++){if(array[i][1] == -1 && array[i][2] == -1){record[total++] = array[i][0];}}printf("%d\n",total);for(i = 0;i<total;i++){printf("%d",record[i]);if(i!=total-1){printf(" ");}}printf("\n");}/**51 3 2 4 551 3 3 4 51010 9 8 7 6 5 4 3 2 11121 2*/
4、坑点
(1)需要注意在判定该数是否为之前的最大数,为之后的最小数,我这里使用的是array[i][1] = -1和array[i][2] = -1表示。
0 0
- PAT 1101
- PAT 1101
- PAT(甲级)1101
- *浙大PAT 1101
- PAT甲级1101
- pat
- 【PAT】
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- pat
- PAT
- 2017.1.17【初中部 GDKOI】模拟赛B组
- 十六进制转十进制
- android usb挂载分析--ext*支持uid、gid等选项
- 使用Java远程连接操作Redis
- ios之热更新技术
- PAT 1101
- Setting the -source and -target of the Java Compiler
- 贝叶斯【王者争霸】
- 五,利用node进行DNS解析
- app:transformClassesWithDexForDebug Execution问题解决
- elasticsearch写入数据存储的过程
- 关于编译器与解释器的区别
- iOS JSON返回的数据有NSNull导致程序崩溃及ios nil、NULL和NSNull的区别
- Maven搭建SpringMvc+Spring+Hibernate框架