1045. 快速排序(25)

时间限制
200 ms

内存限制
65536 kB

代码长度限制
8000 B

判题程序
Standard

作者
CAO, Peng

著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的N个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?

例如给定N = 5, 排列是1、3、2、4、5。则:

  • 1的左边没有元素,右边的元素都比它大,所以它可能是主元;
  • 尽管3的左边元素都比它小,但是它右边的2它小,所以它不能是主元;
  • 尽管2的右边元素都比它大,但其左边的3比它大,所以它不能是主元;
  • 类似原因,4和5都可能是主元。

    因此,有3个元素可能是主元。

    输入格式:

    输入在第1行中给出一个正整数N(<= 105); 第2行是空格分隔的N个不同的正整数,每个数不超过109

    输出格式:

    在第1行中输出有可能是主元的元素个数;在第2行中按递增顺序输出这些元素,其间以1个空格分隔,行末不得有多余空格。

    输入样例:5

  • 1 3 2 4 5
  • 输出样例:3
  • 1 4 5
  • ---------------------------------------
  • 这题想明白了并不难,主元在待排数组里的位置肯定是和排好之后的位置相同的。此时只需要另外一个变量来记录从0位置开始到当前位置最大的数字是多少,如果就是当前数,那就可以定下它是主元了。
  • 而且这道题有个坑,就是测试点2,输出为0的时候,好坑的,还要输出一行空的,也就是说不管怎样结果要有两行
  • ---------------------------------------
  • #include<iostream>
    #include<algorithm>
    #define MAX 100005
    using namespace std;
    //降序排序
    //bool cmp(int a,int b){
    //    return a>b;
    //}
    int main(){int n;cin>>n;if(n==0){cout<<endl;return 0;}int i = 0;int arr[MAX],arr_c[MAX]; while(i!=n){cin>>arr[i];arr_c[i] = arr[i];i++;} sort(arr_c,arr_c+i);int max = 0;int record[MAX];int k = 0;for(i=0;i<n;i++){if(max<arr[i])max=arr[i];if(arr[i]==arr_c[i]&&max==arr[i]){record[k++]=max;}}//sort(record,record+k,cmp);cout<<k<<endl;//cout<<record[k-1];for(i = 0;i < k;++i){if(i == 0 )cout<<record[i];elsecout<<' '<<record[i];}cout<<endl;return 0;
    }

PTA-- 快速排序(25)相关推荐

  1. PTA 快速排序 (25分)

    每个人都有崩溃的时候,就看你的抗压能力到底有多强,如果你的抗压能力强,有办法可以支撑到你能面对并且解决这些困难的话,你就没有问题.                                    ...

  2. C++学习之路 | PTA乙级—— 1045 快速排序 (25 分)(精简)

    1045 快速排序 (25 分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 ...

  3. 1045 快速排序 (25 分)

    1045 快速排序 (25 分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 ...

  4. PAT 1045 快速排序(25)(STL-set+思路+测试点分析)

    1045 快速排序(25)(25 分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分 ...

  5. PTA 快速排序(java/c++)

    1045 快速排序 (25分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 N ...

  6. 1045 快速排序 (25分)

    著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 N 个互不相同的正整数的排列,请问 ...

  7. 测试点2详解:1045 快速排序 (25分)——23行代码满分

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到 ...

  8. 1045. 快速排序(25)-PAT乙级真题

    原题: 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的N个互不相同的正整数的排列, ...

  9. 【PAT乙级】1045 快速排序 (25 分)

    题目地址 #include<cstdio> #include<iostream> #include<algorithm> #include<vector> ...

  10. PAT (Basic Level) Practise 1045 快速排序(离散化+主席树区间内的区间求和)

    1045. 快速排序(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 著名的快速排序算法里有一个经典的划分 ...

最新文章

  1. 让 typora和word一样好用
  2. pat 团体天梯赛 L2-012. 关于堆的判断
  3. fastapi 传输文件存文件_python3 FastAPI框架入门 基本使用, 模版渲染, 数据交互,cookie使用, 上传文件, 静态文件配置...
  4. java中import机制(指定import和import *的区别)
  5. oracle 怎么附加数据库,Oracle 如何附加数据库
  6. 会议通知|2019暑期全国高校Python数据分析与实训课程高级研修班
  7. DevExpress gridcontrol添加了复选框删除选中的多行/批量删除的方法
  8. Error(1.0.5 1107071739): D:\SAE_SDK_Windows_1.0...
  9. 数据库课程设计——学生选课管理系统
  10. 中国伺服电机市场现状调查与投资战略分析报告2022-2028年
  11. 大学计算机基础简历制作,WORD制作新年贺卡和个人简历大学计算机基础课程设计报告书.doc...
  12. plc c语言做报警,wincc声音报警C脚本版
  13. 傅里叶级数、一维傅里叶变换到二维傅里叶变换数理推导
  14. Matlab之机载雷达系统中的空时自适应处理(STAP)技术(附源码)
  15. prolog寻找三角形个数
  16. vue中axios的post请求url自动带上本地ip解决方法
  17. 电脑连接公司中国电信爱wifi反复验证无法连接wifi
  18. 操作系统概论【引入操作系统中的基本概念和操作】
  19. python——正则表达式(re模块)详解
  20. Apple Watch 关闭显示正在听的音乐

热门文章

  1. input 中文输入法额外触发change事件问题
  2. 表情包受保护无法发送怎么破解和制作gif表情包
  3. 5G NR—— RRC_INACTIVE状态
  4. 最新版树莓派3A+ 开箱简介
  5. 微信小程序个人中心、我的界面(示例一)
  6. 陕西万德信息科技面试题
  7. gateway的基本使用
  8. 开发小程序需要服务器吗?小程序服务器配置要求
  9. 程序员的工资大概多少?
  10. 蓝桥杯-填空题Ctrl+F