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

链  接:点击打开链接

题   意:给你两个数n,m,求1 到 m全排列第m小的排列

思   路:全排列的大小是根据它的逆序数的大小

 例如 n=5     1 2 3 4 5 逆序数为0 最小

                      1 2 3 5 4 逆序数为1                   

                        ............................................

利用STL中的全排列函数next_permutation(a,a+n)

代  码:

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int n,m;
	while(cin>>n>>m)
	{
		int a[10005],i,sum=0;
		for(i=0;i<n;i++)
		   a[i]=i+1;
		do
		{
			sum++;
			if(sum==m)
			break;
		}while(next_permutation(a,a+n));
		for(i=0;i<n-1;i++)
		cout<<a[i]<<" ";
		cout<<a[n-1]<<endl;
	}
}


posted @ 2017-02-08 17:24  X_na  阅读(110)  评论(0编辑  收藏  举报