2021-03-26:给定一个正整数N,表示有N份青草统一堆放在仓库里。有一只牛和一只羊,牛先吃,羊后吃,它俩轮流吃草。不管是牛还是羊,每一轮能吃的草量必须是:1,4,16,64…(4的某次方)。谁最先把草吃完,谁获胜。假设牛和羊都绝顶聪明,都想赢,都会做出理性的决定。根据唯一的参数N,返回谁会赢。

福大大 答案2021-03-26:

1.自然智慧即可。
递归。

2.根据结果反推,找规律。
N被5整除,余0或者余5,后手赢。

代码用golang编写,代码如下:

package mainimport "fmt"func main() {    for i := 0; i <= 50; i++ {        fmt.Println(i, " : ", winner1(i), winner2(i))    }}// 如果n份草,最终先手赢,返回"先手"// 如果n份草,最终后手赢,返回"后手"func winner1(n int) string {    if n < 5 {        if n == 0 || n == 2 {            return "后手"        } else {            return "先手"        }    }    base := 1    for base <= n {        if winner1(n-base) == "后手" {            return "先手"        }        if base > n/4 { // 防止base*4之后溢出            break        }        base *= 4    }    return "后手"}func winner2(n int) string {    if n%5 == 0 || n%5 == 2 {        return "后手"    } else {        return "先手"    }}

执行结果如下:


左神java代码
评论

©著作权归作者所有:来自51CTO博客作者福大大的原创作品,如需转载,请注明出处,否则将追究法律责任

每一份赞赏源于懂得

赞赏

0人进行了赞赏支持

更多相关文章

  1. 2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线。
  2. React Native 常见错误集
  3. nexus7 升级失败后手动刷系统
  4. android设置系统图标后手机上不显示出来
  5. 58同城android客户端手机号码解密方法
  6. Android Studio部署apk到手机后手机显示中文乱码解决方法
  7. Android 解决setRequestedOrientation之后手机屏幕的旋转不触发o
  8. Android调试笔记——Installation error

随机推荐

  1. jquery ajax在调用之后将无法工作
  2. 在Capistrano任务中引用当前服务器
  3. 在simplexml_load_file中加载url时出错
  4. 《PHP核心技术与最佳实践》P37中间有一句
  5. php把从数据库读取出来的数据存放到数组
  6. php 谈谈我对session, cookies和jwt的理
  7. 当我将它移动到另一台服务器时,计数器将无
  8. 案例:用Redis来存储关注关系(php版)
  9. 如何在进行单元测试时覆盖php://输入
  10. 如何在mysql中配置区分大小写的数据库标