这题目啥意思

看了5遍楞没看懂

4 条评论

  • @ 2016-09-18 20:55:44

    /*刚开始看还没理解题目意思,但是仔细一想才发现,其实 m的真正含义是讲n个数全排列第 m+1小的数
    例如,m=1,样例中,那么输出的是第2小的,也可以说是除去本身之后全排列 第m小的排列组合*/
    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    int n,m,num[10001];
    int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i)scanf("%d",&num[i]);
    for(int i=1;i<=m;++i)
    {
    //详见于 “代码大全 -中 -算法- next_permutation函数 ” 的代码

    /********************************************************************************有可能看不懂 next_permutation函数
    附上 next_permutation函数的代码 正确理解 next_permutation函数 可见于网址:http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int main()
    {
    int n;
    int a[n];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    scanf("%d",&a[i]);
    do
    {
    for(int i=0;i<n;i++)
    cout<<a[i]<<" ";
    cout<<endl;
    } while (next_permutation(a,a+5));//表示对前5个数进行排列,后面的数不管
    //next_permutation(a,a+3) 为对前面前三个数排列组合
    return 0;
    }
    *****************************************************************************************************************/
    std::next_permutation(num+1,num+n+1);//第m次排列出来的
    /*for(int i=1;i<=n;i++)printf("%d ",num[i]);
    printf("\n");*/
    }
    // printf("\n");
    for(int i=1;i<=n;++i)printf("%d ",num[i]);
    return 0;
    }

  • @ 2016-06-29 15:04:29

    哈哈哈哈哈

  • @ 2013-03-30 12:00:14

    全排列啊
    123
    132
    213
    。。。

  • @ 2009-08-13 09:21:22

    = =。

    我也没看懂= =。

  • 1

信息

ID
1115
难度
3
分类
组合数学 点击显示
标签
递交数
3228
已通过
1663
通过率
52%
被复制
24
上传者