当前位置: 首页 > article >正文

力扣375.猜数字大小 II

力扣375.猜数字大小 II

  • dp

    • dp[i][j]是说依次以从i到j的数字作为分割点(猜的数),必定赢的游戏所用钱的最小值。

    • 在这里插入图片描述

    • 枚举每一列,从下往上算出dp[i][j],最终答案为dp[1][n]

  •   class Solution {
      public:
          int getMoneyAmount(int n) {
              if(n == 1)
                  return 0;
              int dp[n+1][n+1];
              //初始化无穷大
              for(int i=0;i<=n;i++)
                  for(int j=0;j<=n;j++)
                      dp[i][j] = INT_MAX;
              
              //i到i全为0
              for(int i=0;i<=n;i++)
                  dp[i][i] = 0;
              
              //从第二列开始
              for(int j=2;j<=n;j++)
              {
                  //从下往上
                  for(int i=j-1;i>=1;i--)
                  {
                      //枚举除了两侧以外的分割点
                      for(int k=i+1;k<=j-1;k++)
                          //新的值为k+max(dp[i][k-1],dp[k+1][j])
                          dp[i][j] = min(k+max(dp[i][k-1],dp[k+1][j]),dp[i][j]);
                      //求两侧的dp值
                      dp[i][j] = min({dp[i][j],i+dp[i+1][j],j+dp[i][j-1]});
                  }
              }
              return dp[1][n];
          }
      };
    

http://www.kler.cn/a/287665.html

相关文章:

  • JsonCpp
  • C++ 内联函数
  • 遇到 mysql_config not found 错误
  • MySql 日期周处理方式
  • Three.js PBR材质
  • 深度学习中的Pixel Shuffle和Pixel Unshuffle:图像超分辨率的秘密武器
  • AI时代,需要什么样的服务器操作系统?
  • 51单片机-定时器时钟
  • docker实战基础五(Dockerfile)
  • 2024年【电气试验】新版试题及电气试验证考试
  • 请解释Java中的装箱拆箱操作对性能的影响,并讨论其最佳实践。什么是Java中的值传递和引用传递?它们在函数调用中的表现有何不同?
  • redis主从+高可用切换+负载均衡
  • react 列表页面中管理接口请求的参数
  • 当前开发技术的未来发展:趋势、机遇与挑战
  • Spring Cloud Stream与Kafka(一)
  • 【网络安全】Bingbot索引投毒实现储存型XSS
  • 华为OD机试真题 - 拼接URL(Python/JS/C/C++ 2024 D卷 100分)
  • RabbitMQ当消息消费失败时,会重新进入队列吗?
  • skywalking接入nginx
  • ElasticSearch 集群索引和分片的CURD
  • 51单片机-LED闪烁
  • MD5 数字摘要算法的详细介绍与 Python 实现
  • RabbitMQ安装步骤
  • 一键编译QT5源码脚本(交叉编译arm64、mips64版本)
  • Laravel邮件发送功能的实现的方法和技巧?
  • 【HTML】模拟消息折叠效果【附源代码】