zoukankan      html  css  js  c++  java
  • 算法初步——其他高效算法与技巧B1045/A1101.快速排序(本题与B1040/A1093的思路很像,认真体会这两题思想)

    #include <bits/stdc++.h>
    #include<math.h>
    #include <string>
    using namespace std;
    const int MAXN = 100005;
    //const int MOD = 1000000007;
    const int INF = 0x3fffffff;//一个很大的数
    int a[MAXN],leftMax[MAXN],rightMin[MAXN];
    //ans记录所有主元,num为主元个数
    int ans[MAXN],num = 0;
    int main(){
        int n;
        cin>>n;
        for(int i=0;i<n;++i){
            cin>>a[i];
        }
        leftMax[0] = 0;//A[0]左边没有比它大的数
        for(int i = 0;i<n;++i){
            leftMax[i] = max(leftMax[i-1],a[i-1]);//由i-1 推的 i
        }
        rightMin[n-1] = INF;//A[n-1]右边没有比它小的数
        for(int i=n-2;i>=0;--i){
            rightMin[i] = min(rightMin[i+1],a[i+1]);
        }
        for(int i=0;i<n;++i){
            //左边所有数比它小,右边所有数比它大
            if(leftMax[i] < a[i] && rightMin[i] > a[i]){
                ans[num++] = a[i];
            }
        }
        cout<<num<<endl;
        for(int i=0;i<num;++i){
            cout<<ans[i];
            if(i < num - 1){
                cout<<" ";
            }
        }
        cout<<endl;
        system("pause");
        return 0;
    } 
  • 相关阅读:
    2019年春第八周作业
    2019 第七周作业
    2019 第六周作业
    2019 第五周作业
    2019 第四周作业
    2019 第三周作业
    2019 第二周作业
    2019第一周编程总结2
    2019第一周编程总结1
    秋季学期学习总结
  • 原文地址:https://www.cnblogs.com/JasonPeng1/p/12196844.html
Copyright © 2011-2022 走看看