HDOJ 1027 Ignatius and the Princess II
2011-10-14 23:07
471 查看
如果知道STL函数库中的next_permutation函数,此题丝毫没有难度。然后可以反复调用此函数即可。我在此基础上做了优化。因为第N!th的序列都相当于将序列的后n位逆序排列。所以可以在调用next_permutation函数之前,优化前N!次调用(N!<nth)。
#include <algorithm> #include <vector> using namespace std; #include<stdio.h> int main() { //freopen("Ignatius and the Princess II.txt","r",stdin); int seqLength,seqNumber; while(scanf("%d%d",&seqLength,&seqNumber)!=EOF) { vector<int> array; int sum=1,start=1; while(seqNumber>=sum*(start+1)) { start++; sum*=start; } for (int i=1;i<=seqLength;i++) array.push_back(i); int reverseStart=seqLength-start; reverse(array.begin()+reverseStart,array.end()); for (int i=sum+1;i<=seqNumber;i++) next_permutation(array.begin(),array.end()); for (int i=0;i<seqLength-1;i++) printf("%d ",array[i]); printf("%d\n",array[seqLength-1]); } return 0; }
相关文章推荐
- hdoj 1027 Ignatius and the Princess II(全排列变形)
- Hdoj 1027 Ignatius and the Princess II
- Java hdoj 1027 Ignatius and the Princess II
- HDOJ 1027 Ignatius and the Princess II
- hdoj 1027 Ignatius and the Princess II
- hdoj1027 Ignatius and the Princess II
- hdoj1027 Ignatius and the Princess II(全排列)
- HDOJ1027 Ignatius and the Princess II
- [HDOJ1027]Ignatius and the Princess II
- HDOJ 1027 Ignatius and the Princess II - next_permutation函数
- 【HDOJ】1027 Ignatius and the Princess II
- HDOJ HDU 1027 Ignatius and the Princess II
- HDOJ 1027-Ignatius and the Princess II【全排列】
- hdoj 1027 Ignatius and the Princess II 【逆康托展开】
- HDOJ 1027 Ignatius and the Princess II
- HDOJ--1027--Ignatius and the Princess II(利用next_permutation函数去做的)
- hdoj 1027 Ignatius and the Princess II (全排列)
- HDOJ 题目1027 Ignatius and the Princess II(STL)
- hdoj 1027 Ignatius and the Princess II
- hdoj--1027--Ignatius and the Princess II(dfs)