zoukankan      html  css  js  c++  java
  • leetcode464 Can I Win

    思路:

    博弈。

    实现:

     1 class Solution 
     2 {
     3 public:
     4     bool dfs(int cur, int len, int sum, int des, vector<int>& dp)
     5     {
     6         if (sum >= des) return false;
     7         if (dp[cur] != -1) return dp[cur];
     8         for (int i = 0; i < len; i++)
     9         {
    10             int tmp = 1 << i;
    11             if (!(cur & tmp))
    12             {
    13                 if (!dfs(cur | tmp, len, sum + i + 1, des, dp)) 
    14                     return dp[cur] = true;
    15             }
    16         }
    17         return dp[cur] = false;
    18     }
    19     bool canIWin(int maxChoosableInteger, int desiredTotal) 
    20     {
    21         if (!desiredTotal) return true;
    22         if ((maxChoosableInteger * (maxChoosableInteger + 1) / 2) < desiredTotal)
    23             return false;
    24         vector<int> dp(1100000, -1);
    25         return dfs(0, maxChoosableInteger, 0, desiredTotal, dp);
    26     }
    27 };
  • 相关阅读:
    JDBC_PreparedStatement
    JDBC_Statement
    JDBC连接数据库
    Oracle语句
    MySQL用户和权限
    MySQL执行计划
    MySQL创建索引
    MySQL正则表达式
    MySQLshow查询
    MySQL多表连接和分页查询
  • 原文地址:https://www.cnblogs.com/wangyiming/p/7491929.html
Copyright © 2011-2022 走看看