zoukankan      html  css  js  c++  java
  • DFS BestCoder Round #49 ($) 1001 Untitled

    题目传送门

     1 /*
     2     DFS:从大到小取模,因为对比自己大的数取模没意义,可以剪枝。但是我从小到大也过了,可能没啥大数据
     3 */
     4 /************************************************
     5 Author        :Running_Time
     6 Created Time  :2015-8-1 18:57:52
     7 File Name     :A.cpp
     8 *************************************************/
     9 
    10 #include <cstdio>
    11 #include <algorithm>
    12 #include <iostream>
    13 #include <sstream>
    14 #include <cstring>
    15 #include <cmath>
    16 #include <string>
    17 #include <vector>
    18 #include <queue>
    19 #include <deque>
    20 #include <stack>
    21 #include <list>
    22 #include <map>
    23 #include <set>
    24 #include <bitset>
    25 #include <cstdlib>
    26 #include <ctime>
    27 using namespace std;
    28 
    29 typedef long long ll;
    30 const int MAXN = 22;
    31 const int INF = 0x3f3f3f3f;
    32 const int MOD = 1e9 + 7;
    33 int a[MAXN];
    34 bool vis[MAXN];
    35 int n, ans;
    36 
    37 bool cmp(int x, int y)  {
    38     return x > y;
    39 }
    40 
    41 void DFS(int now, int step) {
    42     for (int i=1; i<=n; ++i)    {
    43         if (vis[i] || now < a[i]) continue;
    44         if (now % a[i] == 0)    {
    45             ans = min (ans, step + 1);  return ;
    46         }
    47         vis[i] = true;  DFS (now % a[i], step + 1); vis[i] = false;
    48     }
    49 }
    50 
    51 int main(void)    {       //HDOJ 5339 Untitled
    52     int T;  scanf ("%d", &T);
    53     while (T--) {
    54         int x;   scanf ("%d%d", &n, &x);
    55         for (int i=1; i<=n; ++i)    scanf ("%d", &a[i]);
    56         sort (a+1, a+1+n, cmp);
    57         if (x < a[n])   {
    58             puts ("-1");    continue;
    59         }
    60         memset (vis, false, sizeof (vis));
    61         ans = INF;  DFS (x, 0);
    62         if (ans == INF) puts ("-1");
    63         else    printf ("%d
    ", ans);
    64     }
    65 
    66     return 0;
    67 }
    编译人生,运行世界!
  • 相关阅读:
    双循环解决添加列表问题
    贪心算法
    隔板法发红包
    python小兵之时间模块
    开发规范
    python 小兵(12)模块1
    Linux系统
    刷题
    Socket
    栈和队列
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4697333.html
Copyright © 2011-2022 走看看