题目链接:https://leetcode.com/problems/divisor-game/

题意:Alice和Bob玩一个游戏,Alice先开始。最初,黑板上有一个数字N。每一轮,选手首先需要选择一个数x(0<x<N且N%x==0),并将黑板上的数字N替换成N-x。如果哪个选手无法继续操作,则意味着输掉了游戏。如果Alice赢了返回true。

分析:

(1)先从最简单的case入手。N=1,Alice必败;N=2,Alice只能选择1,则Bob必败,Alice必胜;N=3,Alice只能选择1,则Bob必胜,Alice必败;N=4,Alice可以选择1,也可以选择2,Alice选择1,则Bob必败Alice必胜,Alice选择2,则Bob必胜Alice必败,因此,Alice一定会选择1,因此Alice胜。

(2)由此可推出结论,当Alice面对数字N时,她所需要选择的数字x必须使得Bob在处理N-x时必败,她才可能获胜。因此,如果Alice所有可以选择的x都使得Bob在处理N-x时必胜,那么Alice必败;只要Alice所有可以选择的x中有一种情况能使Bob在处理N-x时必败,那Alice都是必胜的。

class Solution {
public:
bool divisorGame(int N) {
int dp[1010];
dp[1] = 0;
for(int i = 2; i <= N; ++i){
dp[i] = 0;
for(int j = 1; j < i; ++j){
if(i % j == 0){
if(dp[i - j] == 0){
dp[i] = 1;
break;
}
}
}
}
if(dp[N]) return true;
return false;
}
};

  

LeetCode 1025. Divisor Game的更多相关文章

  1. 【Leetcode_easy】1025. Divisor Game

    problem 1025. Divisor Game 参考 1. Leetcode_easy_1025. Divisor Game; 完

  2. 【LeetCode】1025. Divisor Game 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 找规律 动态规划 日期 题目地址:https://l ...

  3. 【leetcode】1025. Divisor Game

    题目如下: Alice and Bob take turns playing a game, with Alice starting first. Initially, there is a numb ...

  4. leetcode动态规划题目总结

    Hello everyone, I am a Chinese noob programmer. I have practiced questions on leetcode.com for 2 yea ...

  5. Weekly Contest 132

    1025. Divisor Game Alice and Bob take turns playing a game, with Alice starting first. Initially, th ...

  6. Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)

    Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game) 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需 ...

  7. LeetCode 1071. 字符串的最大公因子(Greatest Common Divisor of Strings) 45

    1071. 字符串的最大公因子 1071. Greatest Common Divisor of Strings 题目描述 对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连 ...

  8. LeetCode.1025-除数游戏(Divisor Game)

    这是小川的第382次更新,第411篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第244题(顺位题号是1025).Alice和Bob轮流玩游戏,Alice首先出发. 最初 ...

  9. 【leetcode】1283. Find the Smallest Divisor Given a Threshold

    题目如下: Given an array of integers nums and an integer threshold, we will choose a positive integer di ...

随机推荐

  1. 00-Docker基本安装

    目录 00-Docker基本安装 参考 安装与配置 启动与测试 00-Docker基本安装 Docker Version: 19.03.5

  2. 《JavaScript高级程序设计》读书笔记(三)基本概念第五小节流程控制语句

    内容---语法 ---数据类型 上一小节---流程控制语句 本小节---理解函数 语句--ECMA-262规定了一组语句,也称流程控制语句 if语句-- 条件可以是任意表达式,-- ECMAScrip ...

  3. photoshop下载(ps)

    https://pan.baidu.com/s/1bNrUod2n1VqsA7Fr9RHtsg

  4. 一个包含arctan与arctanh的积分

    \[\Large\int_0^1\frac{\arctan x \,\operatorname{arctanh} x\, \ln x}{x}\mathrm{d}x=\frac{\pi^2}{16}\m ...

  5. Java IO流详解(一)——简单介绍

    文件在程序中是以流的形式来传输的.所以用Java来传输文件就得使用到Java IO流. 1.流的概念和作用 流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象<Thinkin ...

  6. yp寒假训练一

    19年东北四省省赛 做了J G C 补了E H J签到题 G 题意: 给n个正方形的两个斜对角点坐标,问最小的移动可以重叠(移动上下左右一格) 思路: 一开始想的是中心pos移动,但是可能有小数,而且 ...

  7. Update(Stage5):DMP项目_业务介绍_框架搭建

    DMP (Data Management Platform) 导读 整个课程的内容大致分为如下两个部分 业务介绍 技术实现 对于业务介绍, 比较困难的是理解广告交易过程中各个参与者是干什么的 对于技术 ...

  8. C++11常用特性介绍——列表初始化

    一.列表初始化 1)C++11以前,定义初始化的几种不同形式,如下: int data = 0;   //赋值初始化 int data = {0};   //花括号初始化 int data(0); / ...

  9. 软件工程 - Test-Driven Development (TDD),测试驱动开发

    参考 https://baike.baidu.com/item/%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/3328831?fr=al ...

  10. Python 爬取 热词并进行分类数据分析-[云图制作+数据导入]

    日期:2020.01.28 博客期:136 星期二 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入](本期博客) ...