Ignatius and the Princess II 全排列

Ignatius and the Princess II 全排列_第1张图片
Ignatius and the Princess II 全排列_第2张图片
Ignatius and the Princess II 全排列_第3张图片
Ignatius and the Princess II 全排列_第4张图片
http://acm.hdu.edu.cn/showproblem.php?pid=1027
这道题,题意就是求 N的第m种排列。

应该属于组合数学中的一种,刚好之前做过康托展开,就感觉可以用康托展开来做。
康托展开 https://blog.csdn.net/lttree/article/details/24798653

http://acm.hdu.edu.cn/showproblem.php?pid=1027

#include
using namespace std;
int fac[]={1,1,2,6,24,120,720,5040,40320};
//存储答案 
int ans[10001],len;
//康托展开的逆 n为要对几位数排序,k为第几个数,num为这n个数从第几个开始 
void reverse_kangtuo(int n,int k,int num)
{
	int i,j,t,vst[11]={0};
	char s[11];
	--k;
	for(i=0;i>n>>m)
	{
		i=1;len=0;
		if(n>8)
		{
			//找出除了后八位以外前边有多少数 
			temp1=n%8;
			temp2=(n/8-1)*8;
			for(;i<=temp1;++i) ans[len++]=i;
			for(j=0;j

原来在洛谷上边做过一个全排列的问题,只记得是一个函数,具体不记得了,以后碰到再补叭

你可能感兴趣的:(c++,数学)