出界的路径数(动态规划算法)

编程入门 行业动态 更新时间:2024-10-11 11:24:52

出界的路径数(动态规划<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法)"/>

出界的路径数(动态规划算法)


这道题用普通的dfs和bfs要超时,可以用动态规划或者记忆化搜索解决。

//动态规划算法class Solution {
public:int dx[4]={0,0,1,-1};int dy[4]={1,-1,0,0};int countpath=0;int mod=1e9+7;int findPaths(int m, int n, int maxMove, int startRow, int startColumn) {vector<vector<int>>dp(m,vector<int>(n)); //记录到达每个点的道路数量//边界条件:走0步到达起点的道路数量为1;走0步,到达任一点的道路数量为0dp[startRow][startColumn]=1; for(int i=1;i<=maxMove;i++){ //第i步,从第一步开始,最多走maxMove步vector<vector<int>>tmp(m,vector<int>(n)); //记录都第i步后到达每个点的路径数量for(int j=0;j<m;j++){for(int k=0;k<n;k++){int cnt=dp[j][k];if(cnt>0)for(int l=0;l<4;l++){int tx=j+dx[l];int ty=k+dy[l];if(tx>=0&&tx<m&&ty>=0&&ty<n){ //如果没越界就那么走第i部到达该点的道路数量就等于当前数量加上走第i-1步到达该点之前的那一个点的数量tmp[tx][ty]=(tmp[tx][ty]+cnt)%mod; }else{ //如果越界就加到总的出界道路数目中countpath=(countpath+cnt)%mod;}}}}dp=tmp;}return countpath;}
};

更多推荐

出界的路径数(动态规划算法)

本文发布于:2024-02-07 11:04:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756198.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   路径   动态

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!