zoukankan      html  css  js  c++  java
  • HDU 6468 /// DFS

    题目大意:

    把 1~15 的数字典序排序后为 1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9

    此时给定 n k, 求1~n的数组字典序排序后 第k个数是什么

    题解

    枚举数的第一位 搜下去继续枚举下一位 直到超过n就回溯

    先序遍历到第k个输出

    #include <bits/stdc++.h>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define LL long long
    #define mem(i,j) memset(i,j,sizeof(i))
    #define inc(i,j,k) for(int i=j;i<=k;i++)
    #define dec(i,j,k) for(int i=j;i>=k;i--)
    #define gcd(i,j) __gcd(i,j)
    const int N=1e6+5;
    const int mod=192600817;
     
    int n,k;
    
    bool OK;
    int c;
    void DFS(int u) {
        if(OK) return;
        c++;
        if(c==k) {
            printf("%d
    ",u);
            OK=1; return;
        }
        inc(i,0,9) {
            int v=u*10+i;
            if(v>n) return;
            DFS(v);
        }
    }
    
    int main()
    {
        int _; scanf("%d",&_);
        while(_--) {
            scanf("%d%d",&n,&k);
            OK=0; c=0;
            inc(i,1,9) DFS(i);
        }
    
        return 0;
    }
    View Code
  • 相关阅读:
    flask框架的使用
    git的基本使用
    pycharm连接数据库以及遇到的问题
    Git原理与Git命令大全
    git使用
    Redis 数据库
    ATM项目
    跨域问题及解决方案
    django的信号
    django的缓存机制
  • 原文地址:https://www.cnblogs.com/zquzjx/p/10560280.html
Copyright © 2011-2022 走看看