zoukankan      html  css  js  c++  java
  • hdu 5339 Untitled【搜索】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5339

    题意:一个整数a 和一个数组b。问你能否在b中取出r个元素排列组成c数组满足a%c1%c1%…..%cr == 0。输出最小的r,不能满足条件输出-1。

    思路:b按从大到小排序,暴搜。

    代码:

    #include <stdio.h>
    #include <ctime>
    #include <math.h>
    #include <limits.h>
    #include <complex>
    #include <string>
    #include <functional>
    #include <iterator>
    #include <algorithm>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <set>
    #include <map>
    #include <list>
    #include <bitset>
    #include <sstream>
    #include <iomanip>
    #include <fstream>
    #include <iostream>
    #include <ctime>
    #include <cmath>
    #include <cstring>
    #include <cstdio>
    #include <time.h>
    #include <ctype.h>
    #include <string.h>
    #include <string>
    #include <assert.h>
    
    using namespace std;
    
    int n, a, b[300],ans;
    
    bool cmp11(int a, int b)
    {
        return a > b;
    }
    
    void dfs(int x,int num,int A)
    {
        if (x == 0)
        {
            ans = min(ans, A); return;
        }
        if (num == n) return;
    
        //printf("    %d
    ",x);
        dfs(x % b[num + 1], num + 1, A + 1);
        dfs(x, num + 1, A);
    }
    
    int main()
    {
        //printf("3 % 7");
        int t;
        scanf("%d",&t);
        while (t--)
        {
            scanf("%d %d", &n, &a);
            for (int i = 1; i <= n; i++)
                scanf("%d", &b[i]);
            sort(b + 1, b + 1 + n, cmp11);
            ans = 500;
            dfs(a, 0, 0);
            if (ans == 500) ans = -1;
            printf("%d
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    2016CCPC长春
    POJ 3974
    CH 1401
    POJ 1426
    hihocoder 1829
    江南OJ 1151
    POJ 3279
    POJ 3349
    POJ 3278
    ZOJ 3983
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6773462.html
Copyright © 2011-2022 走看看