• hdu5339


    所选的数比当前的数大的话就失去意义了 所以要保证最小每一步所选的取余的数都不能大于当前被取余的数

    数据范围很小 直接暴力dfs即可 

    #include<cstdio>
    #include<cstring>
    #include<stack>
    #include<vector>
    #include<queue>
    #include<cmath>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int oo = 0x3f3f3f3f;
    const int maxn = 1e6+117;
    const int mod = 1e9+7;
    typedef unsigned long long LL;
    typedef double de;
    int b[maxn], ans, vis[maxn], n;
    int cmp(int a, int b)
    {
        return a > b;
    }
    void dfs(int x, int step, int m)
    {
        if(x == n+1)
        {
            if(m == 0)
            ans = min(ans, step);
            return ;
        }
        for(int i = x; i <= n; i++)
        {
            if(vis[i] == 0 && b[i] <= m)
            {
                vis[i] = 1;
                dfs(i+1, step+1, m%b[i]);
                vis[i] = 0;
            }
        }
        dfs(x+1, step, m);
    }
    int main()
    {
        int T, i, a;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d %d", &n, &a);
    
            ans = oo;memset(vis, 0, sizeof(vis));
    
            for(i = 1; i <= n; i++)
                scanf("%d", &b[i]);
                
            sort(b+1, b+1+n, cmp);
            dfs(1, 0, a);
    
            if(ans != oo) printf("%d
    ", ans);
            else printf("-1
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    Access小用之感
    PHP学习之路今日开启
    IBatis初体验2
    PHP之PDO介绍
    javascript key code 大全
    如何将虚拟机中的Linux系统与shell终端连接
    linux磁盘情况查询
    vi和vim编辑器的使用
    Linux磁盘分区,挂载
    (转)Android Dalvik虚拟机初识
  • 原文地址:https://www.cnblogs.com/PersistFaith/p/4958382.html
Copyright © 2020-2023  润新知