以前看到C++标准上说,移位运算符(<<、>>)出界时的行为并不确定: The behavior is undefined if the right operand is negative, or greater than or equal to the length in bits of the promoted left operand. 我当时也没有深究过这个问题。前几天有个网友来信问
给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 109 + 7 的值。 示例 1: 输入: m = 2, n = 2, N = 2, i = 0, j = 0 输出: 6 解释: 示例 2:
这道题用普通的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, i
出界的路径数 给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 109 + 7 的值。 示例 1: 输入: m = 2, n = 2, N = 2, i = 0, j = 0 输出: 6
题目详情 给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 109 + 7 的值。 示例 1: 输入: m = 2, n = 2, N = 2, i = 0, j = 0输出: 6解释:
Leetcode 576. 出界的路径数 题目 给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 109 + 7 的值。 测试样例 示例 1: 输入: m = 2, n = 2, N = 2,
记忆化dfs 已遍历过的点他的方案数已知晓 所以无需重新遍历 class Solution {int MOD = (int)1e9 + 7;int[][][] dp;int m1,n1,maxstep=0;public int findPaths(int m, int n, int maxMove, int startRow, int startColumn) {m1=m;n1=n;maxst