康托展开
qq_20340417
这个作者很懒,什么都没留下…
展开
-
康托展开
显然的,给出n个数,范围在1-n间,每个数各不相同,即为全排列问题,方案数为n!。那么现在给出一个n个数的全排列,求在n个数的全排列按字典序排序以后,给出的全排列排第几。例子:3个数的全排列,按字典序排序后为123132213231312321“213”是第3名。此时我们需要用到一个叫“康托展开”的东西。是这样计算的,一开始ans=1:设当前在计算第i个数,则x=比a[i]小原创 2017-10-28 11:14:42 · 181 阅读 · 0 评论 -
滑块
题意(原题): 给出起始与目标两个3*3的矩阵,矩阵内数由0-8组成且互不相同。每次操作可以将0上下左右的任意数与0交换。求到达目标矩阵的最小步数。 思路(请先预习康托展开): 把每个状态进行康托展开成为一个数,随即宽搜即可。 代码:#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>using names原创 2017-10-29 15:36:43 · 215 阅读 · 0 评论