zoukankan      html  css  js  c++  java
  • 嵊州普及Day2T2

    题意:对于n个数的数列,进行排列,求第m个大于此数列的数列。

    思路:查找后2个是否逆序,若是,将后3个递归。如此运算,找后面大于此数中最小数交换,然后将后面数列顺序排列。

    相对简单。

    见代码:

    #include<iostream>
    #include<cmath>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,m,a[100001],flag;
    void sort1(int);
    bool cmp(int,int);
    bool ni(int);
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        cin>>a[i];
        a[0]=0x3f3f3f3f;
        for(int i=1;i<=m;i++)
        {
            flag=0;
            sort1(2);
                for(int i=1;i<=n;i++)
        cout<<a[i]<<" ";
        cout<<endl;
        }
        return 0;
    }
    void sort1(int x)
    {
        if(ni(x))
        sort1(x+1);
        else
        {
            if(x==2)
            swap(a[n-1],a[n]);
            else
            {
                for(int i=n-x+2;i<=n;i++)
                {
                    if(a[i]<a[flag]&&a[i]>a[n-x+1])
                    {
                        flag=i;
                    }
                }
                swap(a[n-x+1],a[flag]);
                sort(a+n-x+2,a+n+1,cmp);
            }    
        }
    }
    bool ni(int x)
    {
        for(int i=n-x+1;i<n;i++)
        {
            if(a[i]<a[i+1])
            return false;
        }
        return true;
    }
    bool cmp(int x,int y)
    {
        return x<y;
    }

    好题哉!!!

  • 相关阅读:
    实例协议分析RFC1483:AAL5和几种常见ADSL接入技术
    2.2.3 Runaround Numbers
    2.2.2 Subset Sums
    2.2.1 Preface Numbering
    Dynamic Programming
    Data Structures
    2.1.5 Hamming Codes
    2.1.4 Healthy Holsteins
    2.1.3 Sorting a Three-Valued Sequence
    2.1.2 Ordered Fractions
  • 原文地址:https://www.cnblogs.com/qing1/p/11182088.html
Copyright © 2011-2022 走看看