题意:给定1,2,3...N个数的集合,现在求所有非空子集(相同元素不同位置视为不同)按字典序排序后的第M个集合是什么?

思路:设i个不同元素组成的非空字典序子集为kind[i],通过递推关系计算出kind[i] = i * (kind[i] + 1)可从计算式上推倒。得到这个关系后就可以通过一位一位的枚举得到答案了。

代码如下:

#include <iostream>
#include <cstring>
using namespace std;int seq[25], idx;
long long kind[25];
int vis[25];void deal(int N, long long M) {bool finish = false;while (!finish) {for (int i = 1; i <= N; ++i) {if (M == 1) {seq[++idx] = i;finish = true;break;} else if (M > (kind[N-1] + 1)) {M -= kind[N-1] + 1;} else {seq[++idx] = i;M -= 1;N -= 1;break;}}    }
}int main() {int N;long long M;kind[1] = 1; for (int i = 2; i <= 20; ++i) {kind[i] = i * (kind[i-1] + 1); // i个不同元素集合的非空字典序子集个数
    }while (cin >> N >> M) {memset(vis, 0, sizeof (vis));idx = -1;deal(N, M);int first = 1;for (int i = 0; i <= idx; ++i) {int x;// seq记录的是一个伪序列,即确定一个数字后又将后面的序列重排 for (int j = 1; j <= N; ++j) {if (!vis[j]) --seq[i];if (!seq[i]) {if (first) {cout << j;first = 0;} else cout << " " << j;vis[j] = 1;break;}}}cout << endl;}return 0;
}

HDU-2062 Subset sequence 递推相关推荐

  1. HDU 6092 Rikka with Subset 思维 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6092 题目描述: 给你一个集合的所有子集各个和, 让你找到这个集合, 输出字典序最小 解题思路: 下 ...

  2. hdu 2013 蟠桃记-递推-[解题报告]C++

    蟠桃记 问题描述 : 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题! 什么问题?他研究的问题是蟠桃一共有多少个! 不过,到最 ...

  3. HDU - 3336 next运用+递推

    题目的匹配应该也要看成一个文本串与另一个模式串的匹配过程 Text是以当前i结尾的后缀来匹配Pattern的前缀(非真) 这里的Pattern肯定是可以匹配成功的,直接由next来保证(next总是当 ...

  4. hdu 2086 A1 = ?(递推)

    Problem Description 有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, -. n). 若给出A0, An+1, 和 C1, C2, -..C ...

  5. hdu 4472 Count(递推即dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4472 代码: #include <cstdio> #include <cstring ...

  6. Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)

    题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...

  7. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

  8. Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...

    Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...

  9. hdu 1133 Buy the Ticket(递推+精度精算)

    做这道题之前可以先做:hdu 1267(递推方法和这道题是一样的知识没有精度计算)这是我的博客链接接:http://www.cnblogs.com/jiangjing/archive/2013/01/ ...

最新文章

  1. Linux下修改Mysql数据库存放路径
  2. MySQL中REGEXP正则查询同一个字段模糊搜索
  3. 查看Oracle中存储过程长时间被卡住的原因
  4. python和java哪个-Python与Java-你首选哪个?
  5. 【错误记录】Flutter 运行报错 Error -32000 received from application: There are no running service protocol
  6. Android控件之ConstraintLayout详解
  7. 【C++】const讲解
  8. HADOOP-Checkpoint原理
  9. 点到曲线的距离_如何从“圆锥”曲线到圆锥曲线
  10. java建立检索项语料库_sentilib_语料库项目_search模块的实现
  11. over oracle 不足补零,oracle的rank,over partition涵数使用
  12. 力扣题目——98. 验证二叉搜索树
  13. iframe框根据内容自适应高度
  14. 命名实体识别研究综述
  15. JetBrains(Intellij, pycharm)多行编辑模式
  16. linux下C语言获取微秒级时间
  17. CCNA考试题库中英文翻译版及答案16
  18. 长连接和短链接在服务器占用资源,TCP长连接和短链接及优缺点
  19. UE4 利用WEBUI插件完成UE与JS的交互 (UE4嵌入WEB)
  20. Android开发之自动更换壁纸

热门文章

  1. 年度重磅!中国《营销自动化应用基准报告 2021》正式发布!
  2. 神策数据首度公开「电商行业事件设计埋点模板」
  3. CEO 赠书 | 甲之蜜糖乙之砒霜,创新者也将成为守旧者
  4. 金融业如何更好地利用大数据实现突破性变革?(实例解读)
  5. 0、elasticsearch前言
  6. iOS - OC 与 C 互相操作
  7. 中国互联网发展的两个瓶颈
  8. 【转载】给不同 type 的 input 自动设置样式
  9. 杜克大学是原来英国Durham人去建立的 MIT和哈佛的是原来Cambridge的人去建立的
  10. 软件工程中的需求分析