暴力递归——范围上尝试的模型,博弈论

简介: 暴力递归——范围上尝试的模型,博弈论

范围上尝试的模型

给定一个整型数组arr,代表数值不同的纸牌排成一条线,玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。

博弈论:双方玩家都不会在对方单独改变策略的情况下让对方获得最大收益

其它类似的零和博弈问题:鳄鱼吃人、海盗分金币、欧拉信封等等

package com.harrison.class12;
public class Code07_CardsInLine {
  public static int f(int[] arr,int L,int R) {
    // 如果只剩下一张牌了,又是先手,那就直接拿走最后一张
    if(L==R) {
      return arr[L];
    }
    // 如果先手拿的是左边的牌,那么后手只能在[L+1,R]上拿牌
    // 如果先手拿的是右边的牌,那么后手只能在[L,R-1]上拿牌
    // 这两种情况下,先手肯定会只选择对自己最有利的方式,也就是返回最大值
    return Math.max(arr[L]+s(arr, L+1, R), arr[R]+s(arr, L, R-1));
  }
  public static int s(int[] arr,int L,int R) {
    // 如果只剩下一张牌了,又是后手,那就没牌拿
    if(L==R) {
      return 0;
    }
    // 因为是后手,所以没得选,只能选得分最少的方式
    // 得分多的方式被先手给选了
    return Math.min(f(arr, L+1, R), f(arr, L, R-1));
  }
  public static void main(String[] args) {
    int[] arr= {4,7,9,5};
    System.out.println(f(arr, 0, 3));
    System.out.println(s(arr, 0, 3));
  }
}
相关文章
|
关系型数据库 MySQL 索引
【mysql】MySQL 复合索引
【mysql】MySQL 复合索引
325 0
|
Java Maven
Maven【5】在IDEA环境中配置和使用Maven
Maven【5】在IDEA环境中配置和使用Maven
353 1
|
9月前
|
消息中间件 关系型数据库 Kafka
阿里云基于 Flink CDC 的现代数据栈云上实践
阿里云基于 Flink CDC 的现代数据栈云上实践
184 1
|
存储 自然语言处理 机器人
ROS2教程06 ROS2行动
这篇文章是关于ROS2(Robot Operating System 2)行动(Action)通信机制的教程,包括行动的概念、特点、命令行工具的使用,以及如何编写行动的客户端和服务器代码,并介绍了如何测试行动通信。
559 4
ROS2教程06 ROS2行动
|
存储 安全 前端开发
Web安全-表单域隐藏
Web安全-表单域隐藏
262 3
|
SQL Java 应用服务中间件
Apache Doris 自定义C++ UDF之流程详解(1)
Apache Doris 自定义C++ UDF之流程详解(1)
585 0
|
缓存 监控 负载均衡
Gateway
【7月更文挑战第3天】
483 12
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十五)(3)
PyTorch 2.2 中文官方教程(十五)
503 2
PyTorch 2.2 中文官方教程(十五)(3)
|
存储 XML JSON
应用层协议设计及ProtoBuf
应用层协议设计及ProtoBuf
350 0
|
数据安全/隐私保护
PGA调整峰值,IDA分析调整Sa(T,ξ)反应谱
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度