HDU - 1027 Ignatius and the Princess II (全排列函数)

题目大意:题目给出n和m,从1到n的一串数字,当然是存在字典序的,就比如1、2、3这三个数,字典序从小到大就是123、132、213、231、312、321。题目要求找出由1到n数字组成的字典序为m的排列;

题目思路 :STL里面有全排列函数哇,n最多才1000个,直接一个一个来就好;

题目链接:题目在这里

AC代码:

#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int num[1005];
int main(void)
{
	int n,m,i,cnt;
	while(~scanf("%d%d",&n,&m))
	{
		memset(num,0,sizeof(num));
		cnt=1;
		for(i=1;i<=n;i++)
		{
			num[i]=i;
		}
		m--;
		while(next_permutation(num+1,num+n+1))
		{
			if(cnt==m)
			{
				for(i=1;i<n;i++)
				   printf("%d ",num[i]);
				printf("%d\n",num[n]);
				break;
			}
			cnt++;
		}
	}
	return 0;
}

呼呼

猜你喜欢

转载自blog.csdn.net/destiny1507/article/details/81175721
今日推荐