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

2328. 网格图中递增路径的数目 2001 关于灵神解法的消化

很显然这是一个dp问题,然而dp的状态转移过程如何设置,对于我来说较难观察。题目要求求出从任意格子出发,到任意格子的严格递增路径的数目,根据灵神的题解,状态转移方程如下:

f_{i,j} = \sum(f_{i+1,j}+f_{i,j+1}+f_{i-1,j}+f_{i,j-1})\\ ans = \sum(f_{i,j})

f_{i,j}是指从i行,j列出发的严格递增路径条数。

不难发现,f_{i,j}\,f_{i+2,j}\,f_{i,j-1}\,f_{i,j + 1},需要用到f_{i+1,j}这一状态,这样很容易就联想到记忆化递归,而递归的终止条件当然是f_{i,j} = 1

c++代码如下(复制的灵神

class Solution {
public:const int MOD = 1'000'000'007;const int dirs[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};int countPaths(vector<vector<int>>& grid) {int m = grid.size(),n = grid[0].size();vector memo(m,vector<int>(n,-1));auto dfs = [&](this auto&& dfs,int i ,int j) -> int{//  auto dfs = [&](this auto&& dfs, int i, int j) -> int {int& res  =  memo[i][j];if (res != -1){return res;}res = 1;for (auto& [dx,dy]:dirs){int x = i + dx;int y = j + dy;if(0 <= x&& x < m&&0 <= y && y < n&& grid[x][y] > grid[i][j]){res = (res + dfs(x,y))%MOD;}}return res;};long long ans = 0;for (int i= 0;i < m  ; i ++){for (int j = 0; j < n; j ++){ans += dfs(i,j);}}return ans%MOD;}
};

因为我写cpp还是不太熟练,所以顺便学习学习cpp函数调用的语法。

        auto dfs = [&](this auto&& dfs,int i ,int j) -> int{}

这是一行lambda表达式,auto说明能自动识别这个函数返回的任意值,[&]表示捕获外部的所有变量,this表示调用自身,在cpp20后才有这个功能,其他就是正常的函数调用了。

而对于在计算过程种不变的量,可以设置为常量

    const int MOD = 1'000'000'007;const int dirs[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};

值得一提的是,cpp的数组全部用花括号表示。而且常量数组一般不能使用vector,因为vector的大小在程序运行时才可以确定,不符合常量不可变性质。

关于ans开的Long long 自然是不开long long 见祖宗啦;

供交流和记录使用,欢迎批评和指正。

http://www.dtcms.com/a/443293.html

相关文章:

  • 网站数据库有哪些中企动力官网 网站
  • 正则表达式入门与进阶(优化版)
  • 服装销售网站建设策划书wordpress time()
  • 1.7 巴特沃斯滤波器
  • 在线做试卷网站网页设计作业代做
  • 个人网站免费的吗网站开发的体会
  • 做安防在哪个网站做广告呢保网微商城官网登录
  • 中国建设银行网站如何注册品牌网站建设 蝌蚪小7
  • 重庆专业做淘宝网站百度h5怎么发布
  • 厦门网站设计排行兰州网络推广徽hyhyk1
  • 用Python升级贾维斯:添加人脸识别功能,实现“刷脸”控制电脑/设备
  • 为什么java中不使用多叉树
  • 没人做网站了吗网站模块功能
  • 10.2 容器云部署准备(二)
  • 铜陵网站建设企业vi设计合同
  • 【文献笔记】NeurIPS 2022 | PointNeXt
  • 安庆建设网站怎么创建网站页面
  • wordpress 众筹网站众筹网站建设方案模板
  • 线性表的实现
  • 传播文化有限公司网站建设查询网138网站域名
  • YOLO入门教程(番外):卷积神经网络—从全连接层到卷积
  • 技术支持 东莞网站建设大型门户网站开发案例
  • Rust程序语言设计(1-4)
  • 做北京电梯招标的网站合肥seo外包平台
  • CodeForces 20251003 - ?
  • node服务端通过socket.io保持长连接通信示例
  • Super-Resolution Delay-Doppler Estimation for OFDM Passive Radar
  • 九江开发区建设环保局网站贵州住房建设厅官网查询
  • 郑州诺耀科技 - 郑州高端网站建设营销推广网站路径怎么做
  • 招聘网站源码下载岳阳市交通建设投资公司门户网站