转自CSDN小威的专栏morgan_xww康托展开:X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0!ai为整数,并且0<=ai<i(1<=i<=n)应用实例:{1,2,3,4,...,n}的排列总共有n!种,将它们从小到大排序,怎样知道其中一...
分类:
其他好文 时间:
2015-05-09 23:28:01
阅读次数:
241
题目链接:http://poj.org/problem?id=1077思路分析:题目要求在找出最短的移动路径,使得从给定的状态到达最终状态。搜索算法选择:由于需要找出最短的移动路径,所以选择bfs搜索判重方法:将空格视为数字9,则可以将状态的集合视为1-9的排列组合的集合,根据康托展开,将每一个状态...
分类:
其他好文 时间:
2015-05-07 00:44:09
阅读次数:
233
我排第几个
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?
输入
第一行有一个整数n(0
随后有n行,每行是一个排列;
输出
输出一个整数m,占一行,m表示排列是第几位;
样例输入
...
分类:
其他好文 时间:
2015-05-05 14:25:42
阅读次数:
139
分析:经典的八数码问题,参考别人的代码写的,逆向广搜,把结果保存起来,之后在使用。
#include
#include
using namespace std;
#define STATE_COUNT 363000 //因为9!=362880
int fact[]={1,1,2,6,24,120,720,5040,40320,362880}; //0到9的阶乘,用来计算hash值
cha...
分类:
其他好文 时间:
2015-04-27 21:54:28
阅读次数:
175
康托展开 康托展开的公式是 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始)。 这个公式可能看着让人头大,最好举个例子来说明一下。例如,有一个数组 s = ["A", "B", ...
分类:
其他好文 时间:
2015-04-12 11:57:01
阅读次数:
179
题目:给你一个字符串,判断他是这些字符组成的全排列中按字典序排序的第几位。
分析:组合数学。康托展开,枚举长度求和即可。
首先,考虑非重集,从前向后扫描,每一位找到前面相同本位小于对应值得串个数;
例如:f(cba)= 2*2!+ 1*1!= 5,对应第6个串;
(c**对应a、b开头的比他小,cb*对应ca开头的比他...
分类:
其他好文 时间:
2015-04-02 10:29:31
阅读次数:
180
Seven PuzzleTime Limit : 1 sec, Memory Limit : 65536 KB7パズルは8つの正方形のカードとこれらのカードがぴたりと収まる枠を使って行います。それぞれのカードは互いに区別できるように、0,1,2....7と番号がつけられています。枠には、縦に2個、横...
分类:
其他好文 时间:
2015-03-31 23:53:17
阅读次数:
240
http://acm.hdu.edu.cn/showproblem.php?pid=3567相比Eight,似乎只是把目标状态由确定的改成不确定的,但是康托展开+曼哈顿为h值的A*和IDA*都不过,而且也不好控制字典序换个角度想,虽然起始状态有很多,但是到底哪一位是1,哪一位是2不是最重要的,最重要...
分类:
编程语言 时间:
2015-03-19 23:40:34
阅读次数:
198
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 , 康托展开 + BFS + 打表。 经典八数码问题,传说此题不做人生不完整,关于八数码的八境界:http://www.cnblogs.com/goodness/archive/2010/0...
分类:
其他好文 时间:
2015-03-18 13:58:06
阅读次数:
135