[dp]leetcode 1025. Divisor Game

输入:一个正整数N
输出:Alice赢,返回true,否则false
规则:黑板上给出一个数字N,ALice先选择。Bob后选择。他们可以选择一个数字 X,0<X<N并且N%X=0。一个人选择X以后,黑板上的数字变为N-X。
当一个人没有可以选择的数字的 时候,就输了。假设Alice和 Bob水平相同,状态相同。
分析:假设N=5。
Alice选择1,黑板数字 变为4。
Bob选择2或者1.
 Bob选择2,黑板 数字变为2。
  Alice选择1,黑板数字变为1。
  Bob没有可以选的,Alice赢。
 Bob选择1,黑板数字变为3
  Alice选择1,黑板数字变为2。
  Bob选择1,黑板数字变为1。
  Alice没有可以选的,Alice输。

Bob有两种选择,会导致Alice可能赢,也可能输。那结果应该是什么呢?题目中有一个条件是:Alice和 Bob水平相同,状态相同。他们应该会分析怎么选择才能让自己赢。我觉得这可能是题目的难点。我们使用归纳法总结一下。
从上面的分析看到,谁遇到数字1,谁会输。谁遇到数字2,谁就会赢。谁遇到数字3,谁会输。
那遇到数字4,只要让对方遇到数字3,自己就赢了。
那遇到遇到数字5呢?要让对方遇到数字3或者1,自己能赢,但是5%2不等于0,5%4不等于0,所以只能选择1,对方遇到数字4,对方赢。
我们需要一个dp,dp[i]=true表示Alice遇到数字i会赢,dp[i]=false表示Alice遇到数字i会输。

	public boolean divisorGame(int N) {boolean[] target = new boolean[N+1];target[1] = false;        if(N<=1) return false;target[2] = true;for(int x = 3;x<=N;x++){for(int y=1;y<=x/2;y++){if(x%y==0 && target[x-y]==false){target[x]=true;break;}}}return target[N];}

分析2:使用数学归纳法。
N=1,输
N=2,赢
N=3,输
N=4,赢
假设 N=奇数,输,N=偶数,赢。
那么当N=n+1时,如果n是偶数,N一定是奇数。如果想要赢,我们一定要选一个偶数,留给对方一个奇数。但是N是奇数,N的约数只有1,我们只能选择1,剩下一个偶数给对方。所以我们一定会输。
如果n是奇数,N一定是偶数。如果想要赢,我们一定要留给对方一个奇数,那我们可以选择一个奇数,可以直接选择1,留一个奇数给对方。我们一定会赢。
假设成立。

	public boolean divisorGame(int N) {return N%2==0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring学习(25):通过构造函数依赖注入

目录结构 pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

计算机原理

计算机组成原理 简单易学、开源免费、可移植、可拓展、可嵌入、面向对象&#xff0c;比java、c#等更彻底 谷歌、CIA、nasa、YouTube、Dropbox、Instagram、Facebook、redhat、豆瓣、知乎、春雨医生、搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、土豆、新浪、果壳等都在使…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]49.描述在IPsec和TLS后的基本想法

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 网络安全协议&#xff08;Internet Protocol Security&#xff0c;IPsec&#xff09;和安全传输层协议&…

spring学习(26):更优雅的依赖注入 在@bean注入参数

目录结构 pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[dp] LeetCode 62. Unique Paths

输入&#xff1a;两个int m和n 输出&#xff1a;一个int,表示不同路径的个数。 规则&#xff1a;有一个m行n列的矩阵&#xff0c;一个机器人从左上角走到右下角&#xff0c;每次向下或者向右走一格。 分析&#xff1a;目的是要找到从(0,0)到(m-1,n-1)有多少种不同 的走法。如果…

springboot 控制台程序读取配置文件(原创)

首先新建一个springboot项目&#xff0c;此处省略。 1.新建一个application.properties person.namekevin person.age6 person.sexmale 2.新建一个类&#xff0c;自动读取对应字段的值 有两种方式&#xff0c; 第一种 package cn.wq;import org.springframework.beans.factory.…

spring学习(27):通过setter依赖注入

目录结构 pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]50.什么是BLS基于对的签名方案?

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 转载链接&#xff1a;https://www.cnblogs.com/zhuowangy2k/p/12248721.html

EF(Entity FrameWork)实体框架

一、 1、简称&#xff1a;实体框架 2、ADO.NET Entity FrameWork 是微软以ADO.NET为基础发展出来的对象关系对应&#xff08;O/R Mapping&#xff09;解决方案&#xff1b; 3、ORM框&#xff1a;对象关系映射&#xff08;Object-Relational Mapping&#xff09;&#xff0c;是一…

深度学习04-RNN

文章目录1 为什么需要RNN1.1RNN的应用场景1.2 DNN和CNN不能解决的问题2 RNN的网络结构2.1 RNN基础结构2.2 不同类型的RNN3 RNN的优化算法BPTT4 LSTM5 GRU1 为什么需要RNN 1.1RNN的应用场景 1 模仿论文&#xff08;生成序列&#xff09;。输入是一堆的论文文章&#xff0c;输出…

spring学习(28):处理自动装配的歧义性

pox.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]51.基于ID的加密安全模型,描述IBE方案

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 在公钥密码学中&#xff0c;如果Alice想要给Bob发送一条消息&#xff0c;她需要Bob的公钥&#xff0c;一般来…

shell 脚本实现退点输出

1、elasticsearch启动脚本 1 #!/bin/bash2 export JAVA_HOME/usr/java/jdk1.8.0_201-amd643 export JAVA_BIN/usr/java/jdk1.8.0_201-amd64/bin4 export PATH$JAVA_BIN:$PATH5 export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar6 export JAVA_HOME JAVA_BIN P…

spring学习(29):xml配置规范

目录结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[dp] LeetCode 91. Decode Ways

输入&#xff1a;一个字符串&#xff0c;只包含0-9的字符。 输出&#xff1a;解码种类 规则&#xff1a;有一种信息映射规则 A->1,B->2…Z->26。 例如输入’1’&#xff0c;只能解码为A。 输入’12’&#xff0c;可以解码为’AB’&#xff0c;也可以是’L’&#xff0…

leetcode——背包问题汇总

本章来汇总一下leetcode中做过的背包问题&#xff0c;包括0-1背包和完全背包。 背包问题的通常形式为&#xff1a;有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。求解将哪些物品装入背包里物品价值总和最大。0-1背包和…

[密码学基础][每个信息安全博士生应该知道的52件事]52.先进的应用概念 系统的大致安全需求

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。我们希望学生知道从理论到实践的各个方面。但关键是你需要在密码学中考虑的不仅是对遵守规则的玩家的安全&am…

spring学习(32):使用junit4测试

目录结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

[dp]Leetcode 5. Longest Palindromic Substring

输入&#xff1a;一个字符串s 输出&#xff1a;最长的回文子串 规则&#xff1a;“abba"是一个回文 分析&#xff1a;输入是"babad”&#xff0c;输出"bab"。这个问题不能再按照之前分段的思路解决&#xff0c;或者说完全按照之前的思路。 之前的思路是&a…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]38.隐蔽信道和侧信道的区别

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。 隐蔽信道和侧信道是两种不同的信息泄露信道 隐蔽信道使用目的不是通信的机制。例如&#xff0c;写和检查文…