464. 我能赢吗

2024-05-11 17:04
文章标签 我能 464

本文主要是介绍464. 我能赢吗,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

464. 我能赢吗

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
    • _464我能赢吗_记忆化dp
  • 错误经验吸取

原题链接:

464. 我能赢吗

https://leetcode.cn/problems/can-i-win/description/

完成情况:

在这里插入图片描述

解题思路:

这段代码是一个使用深度优先搜索(DFS)和记忆化搜索(Memoization)的算法,用于解决一个游戏问题。下面是代码的解释:

  1. canIWin 方法:这个方法用于判断玩家是否能赢得游戏。首先,它会检查是否所有可选整数之和小于期望的总数,如果是,则返回 false,否则调用 dfs 方法。

  2. dfs 方法:这个方法是深度优先搜索的核心。它会递归地尝试所有可能的选择,记录已经使用过的数字,并在适当的时候进行回溯。具体步骤如下:

    • 如果当前的选择已经被记录在 memo 中,则直接返回 memo 中对应的结果。
    • 否则,遍历所有可选整数,检查是否该整数已经被使用过。
    • 如果该整数未被使用,判断选择该整数后是否能达到或超过期望的总数,如果是,则返回 true。
    • 否则,递归调用 dfs 方法,更新已使用数字的状态,并继续搜索下一个选择。
    • 最后,将当前选择的结果存入 memo 中,并返回该结果。

这段代码的目的是找出在给定规则下,玩家是否能赢得游戏。通过记忆化搜索,避免重复计算,提高了算法的效率。

参考代码:

_464我能赢吗_记忆化dp

package leetcode板块;import java.util.HashMap;
import java.util.Map;public class _464我能赢吗_记忆化dp {Map<Integer,Boolean> memoery = new HashMap<Integer,Boolean>();/**** @param maxChoosableInteger* @param desiredTotal* @return*/public boolean canIWin(int maxChoosableInteger, int desiredTotal) {//  两名玩家轮流 -> 选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和 达到或超过  100 的玩家,即为胜者。//  如果我们将游戏规则改为 【“玩家 不能 重复使用整数”】 呢?/*两个整数 maxChoosableInteger (整数池中可选择的最大数)和 desiredTotal(累计和),若先出手的玩家能稳赢则返回 true ,否则返回 false 。假设两位玩家游戏时都表现 最佳 。允许选择使用重复的数   -->  先手是否一定能赢?*/if ((1 + maxChoosableInteger) * (maxChoosableInteger) / 2 < desiredTotal){  //如果这些数的累计和的一半不超过目标值,那么永远不可能满足需求return false;}return dfs_canIWin(maxChoosableInteger,0,desiredTotal,0);}/*** 见名知意* @param maxChoosableInteger* @param usedNumbers* @param desiredTotal* @param currentTotals* @return*/private boolean dfs_canIWin(int maxChoosableInteger, int usedNumbers, int desiredTotal, int currentTotals) {if (!memoery.containsKey(usedNumbers)){boolean result = false;for (int i = 0;i<maxChoosableInteger;i++){  //在这些数中每次都选取最大的数?if (((usedNumbers >> i) & 1) == 0){  //从低位到高位开始取值if (i + 1 + currentTotals >= desiredTotal){result = true;break;}if (!dfs_canIWin(maxChoosableInteger, usedNumbers | (1 << i), desiredTotal, currentTotals+i+1)){result = true;break;}}}memoery.put(usedNumbers,result);}return memoery.get(usedNumbers);}
}

错误经验吸取

这篇关于464. 我能赢吗的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/980126

相关文章

464. Can I Win

In the “100 game,” two players take turns adding, to a running total, any integer from 1..10. The player who first causes the running total to reach or exceed 100 wins. What if we change the game so

由此开篇,记录开发之路的点点滴滴。跟大家一起分享,以及以后我能用的着。

现在是一名Android开发的实习生,也是一名码农。 每周来公司实习3到4天,每天的任务就是编代码,实现功能。一坐就是几个小时。 现在公司就我一个搞android这一块,自己技术一般,有些功能还是要看别人的demo或者博客。所以我就想自己也写一个博客,记录一些日常经常用到代码功能。 主要是为了以后自己能用,如果还能帮到大家就最好了。       此博客会不定时更新。有新的会第一时间分享给大

JG/T 464-2014 集成材木门窗检测

集成材是指将木材的纤维方向基本平行的板材、小方材等在长度、宽度和厚度方向上集成胶合而成的材料,以集成材为主要受力构件制作的门窗,称为集成材木门窗。 JG/T 464-2014集成材木门窗检测项目 测试项目 测试标准 外观及表面质量 LY/T 1787 GB/T 9286 尺寸偏差 JG/T 464 门窗装配 JG/T 464 抗风压 GB/T 7106 水密性 GB/T

Codeforces Round #464 Convenient For Everybody 思维

Convenient For Everybody 题意: 将一天分为 n 个小时,所以有 n 个时区(当第一个时区的时间为1时,第 i 个时区则为 i 时)。现在要举办一场比赛(比赛的时间为 1 个小时)给你每个时区参赛的人数  a ,和一个时间段 s~f,当地时间不小于 s 且小于 f 的时间可以参加比赛。求参赛人数最多时最小的开始时间(第一个时区的时间) 。 题解: 一共可以有 m=

年薪50万的C++程序员不知道字符数组!网友直呼:我能拿年薪100万!

程序员段某,于2016年加入北京网易云公司,后来段某经过了公司的技术面试,正式入职腾讯研究院,或将成为一名工程师。但是在面试的时候段某竟然不知道什么是字符数组。对此,网易官方表示,“虽然他基础不扎实,但是开发思维活跃,这是如今难得品质。经过一次次面试,终于入职网易研究院,开始了工程师的生涯,也开始了他华丽的转身”。 另据透露,段某性格乐观向上,一有空闲他就拿着一本C++书籍在看,有不懂的问题

20几个 Python 小游戏,上班摸鱼我能玩一天(内附源码、python工具)

今天给大家带来上班摸鱼的20个游戏,超级有趣,很简单,这个需要先把python编辑器安装好,需要python编辑器(破解版)文章末尾获取! 1、平衡木 玩法:也是小时候的经典游戏,控制左右就行,到后面才有一点点难度。 源码分享: import cfgfrom modules import breakoutClone'''主函数'''def main():game = breako

我能做点什么

最近在想能做点什么,该做点什么。 forker 2007-08-15 16:54 发表评论

我能做什么......

人慢慢的老 生活慢慢的熬  我能做什么......

大学,最后我能带走什么?

大学,最后我能带走什么?  日期:2005-11-26 16:38:57     来源: <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 岁月的年轮依

我能ping通别人电脑 别人ping不通我的?

关闭防火墙还是ping不通? 打开网络共享中心更改高级共享设置 选择启用网络发现 ———————————————— 版权声明:本文为CSDN博主「初七i」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_36444936/article/details/87792667