HDU ACM 11 2062 Subset sequence

来源:互联网 发布:淘宝网舞蹈演出服装 编辑:程序博客网 时间:2024/05/22 12:57

问题:先输入一个数字n,初始集合即为(1, 2, 3, 4,........n),将这个数列的所有真子集合按照字典顺序排列,然后再输入m,输出第m个子序列。

#include <iostream>using namespace std;int main(){__int64 Lu[22], Hui[22];Hui[0] = 0;for (int i = 1; i <= 21; i++)Hui[i] = (i - 1) * Hui[i - 1] + 1;__int64 m;__int64 n;while (cin >> n >> m){for (int i = 1; i <= 20; i++)Lu[i] = i;__int64 x;while (m && n){x = m/Hui[n] + (m%Hui[n] > 0 ? 1 : 0);if ( x > 0){cout << Lu[x];for (__int64 i = x; i <= n; i++)Lu[i] = Lu[i + 1];m -=((x - 1) * Hui[n] + 1);cout << (m == 0 ? '\n' : ' ');}n--;}}return 0;}



0 0
原创粉丝点击