首页 > 其他 > 详细

hdu 1027 Ignatius and the Princess II (STL 全排列)

时间:2015-04-21 22:50:18      阅读:252      评论:0      收藏:0      [点我收藏+]

            题目链接今天学了 全排列函数 之后,再回过头来看这一题,发现这时对于这样的题 就是一个字 秒 。主要函数有两个 next_permutation 和 prev_permutation这两个一个是向后找 一个是向前找,next的是往后,prev的是向前找。有的人可能不太明白我这里只的向前和向后的意思。 向前 就是 往 字典序小 的 方向 找 ,反之 就是向前。

            举个例子把 :假设数组a[n],i<=m,next_permutation(a+i,a+m)就表示对a[i]到a[m]进行操作,每操作一次字典序就增大“一个单位”

            例:a[0] = 1, a[1] = 2, a[2] = 3 操作一次之后,就变为 a[0] = 1, a[1] = 3, a[2] = 2;

            prev_permutation 用法与之相同。

            有了这些知识,现在再来看这一题,那就简单了。

(hdu1716排列2和这一题十分类似,以前我是直接暴力过得,现在有了这个可以轻松许多了)

代码如下:

#include <iostream>
#include <algorithm>
#define MAXN 1000 + 10
using namespace std;
int a[MAXN];
int main(){
    int n,m,i;
    while(cin>>n>>m){
        for(i = 1;i<=n;i++)
            a[i] = i;
        for(i = 1;i<m;i++)
            next_permutation(a+1,a+n+1);
        for(i = 1; i <= n; i++ ){
            if(i > 1) cout<<" ";
            cout<<a[i];
        }
        cout<<endl;
    }
    return 0;
}



hdu 1027 Ignatius and the Princess II (STL 全排列)

原文:http://blog.csdn.net/luomingjun12315/article/details/45173975

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!