摘要: #include #include #include using namespace std; // 适用范围: int: n --> [0, 15] long long: n--> [0, 21] class Cantor_Expansion{ public: // 阶乘数组 const int fac[16] = {1, 1, 2, 6, 24, 120... 阅读全文
posted @ 2018-08-14 17:06 过路人1998 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 康托展开 Cantor expansion康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 说直白些就是: 你给一个排列,康托展开可以计算它是第几个全排列. 逆康托展开:你给一个数组和一个数字k,康托展开 阅读全文
posted @ 2018-08-14 15:29 过路人1998 阅读(446) 评论(0) 推荐(0) 编辑
摘要: dfs题大杂烩 棋盘问题 POJ - 1321 和经典的八皇后问题一样. 给你一个棋盘,只有#区域可以放棋子,同时同一行和同一列只能有一个棋子. 问你放k个棋子有多少种方案. 很明显,这是搜索题. 因为每一行和每一列只能有一个棋子,所以我们可以从第k行一直到第n行枚举所有放棋子的情况,即我们从当前状 阅读全文
posted @ 2018-08-14 09:54 过路人1998 阅读(248) 评论(0) 推荐(0) 编辑