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

题目链接今天学了 全排列函数 之后,再回过头来看这一题,发现这时对于这样的题 就是一个字 秒 。主要函数有两个 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;
}
时间: 2024-12-20 22:13:25

hdu 1027 Ignatius and the Princess II (STL 全排列)的相关文章

HDU 1027 Ignatius and the Princess II[DFS/全排列函数next_permutation]

Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9458    Accepted Submission(s): 5532 Problem Description Now our hero finds the door to the BEelzebub feng5166. He op

HDU 1027 Ignatius and the Princess II(求第m个全排列)

传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1027 Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10388    Accepted Submission(s): 5978 Problem Description Now our

HDU 1027 Ignatius and the Princess II

原题代号:HDU 1027 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1027 原题描述: Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8415    Accepted Submission(s): 4955 Problem

HDU 1027 Ignatius and the Princess II(康托逆展开)

Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4865    Accepted Submission(s): 2929 Problem Description Now our hero finds the door to the BEelzebub feng5166. He o

hdu 1027 Ignatius and the Princess II(正、逆康托)

题意: 给N和M. 输出1,2,...,N的第M大全排列. 思路: 将M逆康托,求出a1,a2,...aN. 看代码. 代码: int const MAXM=10000; int fac[15]; int ans[1005]; int kk; int n,m; vector<int> pq; int main(){ int cn=0; fac[0]=1; while(1){ ++cn; fac[cn]=fac[cn-1]*cn; if(fac[cn]>MAXM){ --cn; break

hdoj 1027 Ignatius and the Princess II 【逆康托展开】

Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4865    Accepted Submission(s): 2929 Problem Description Now our hero finds the door to the BEelzebub feng5166. He o

HDOJ 1027 Ignatius and the Princess II - next_permutation函数

Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5447    Accepted Submission(s): 3198 Problem Description Now our hero finds the door to the BEelzebub feng5166. He o

HDU1027 Ignatius and the Princess II【全排列】

Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11536 Accepted Submission(s): 6640 Problem Description Now our hero finds the door to the BEelzebub feng5166. He opens

Ignatius and the Princess II(全排列)

Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6359    Accepted Submission(s): 3760 Problem Description Now our hero finds the door to the BEelzebub feng5166. He o