zoukankan      html  css  js  c++  java
  • 【HDOJ】2062 Subset sequence

    这道题目非常好,饶了点儿圈子。我的思路是,先按照组排列。例如,
    1            2           3
    1 2         2 1        3 1
    1 2 3      2 1 3     3 1 2
    1 3         2 3        3 2
    1 3 2      2 3 1     3 2 1
    分成3组,每组个数是确定的,因此可以通过m/组数获得第一个数字,然后组数因n--而减小。重新计算属于哪一组,但此时需要考虑printf的数字,因此使用visit数组保证每个数字仅遍历一次。需要注意的是m应先--,这样第1个和第5个可以保证在同一组内。组后需要注意long long,题目非常好。

    #include <stdio.h>
    #include <string.h>
    
    #define MAXNUM 25
    
    long long each_gp[MAXNUM] = {0};
    int visit[MAXNUM];
    
    int main() {
        int n;
        long long m;
        long long i, j, k;
    
        for (i=1; i<=20; ++i)
            each_gp[i] = (i-1) * each_gp[i-1] + 1;
    
        while (scanf("%d %I64d", &n, &m) != EOF) {
            memset(visit, 0, sizeof(visit));
    
            m--;
            k = m / each_gp[n] + 1;
            printf("%I64d", k);
            visit[k] = 1;
            m = m % each_gp[n--];
    
            while (m>0 && n>0) {
                m--;
                k = m / each_gp[n] + 1;
                j = i = 0;
                do {
                    i++;
                    if (visit[i] == 0)
                        j++;
                } while(j < k);
                printf(" %I64d", i);
                visit[i] = 1;
                m = m % each_gp[n--];
            }
            printf("
    ");
        }
    
        return 0;
    }
  • 相关阅读:
    智能网关de_GWD的一次排障经历
    盛唐领土争夺战读后感
    Unreal Open Day游记
    虚幻4随笔7 未知的未来
    虚幻4随笔6 Object和序列化
    虚幻4随笔5 使用中的一些发现
    虚幻4随笔4 从工程开始
    松口气,近一段时间的工作学习情况
    虚幻4随笔 三 从UE3到UE4
    关卡原型制作思路
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3596237.html
Copyright © 2011-2022 走看看