算法练习
文章平均质量分 62
Smile :)
这个作者很懒,什么都没留下…
展开
-
求组合数的优化方法
常规求组合数C(n,m)=n(n-1)*(n-2)…n(n-m+1)/m!这个方法非常容易导致溢出,只有使用大数运算才能求出结果优化方法C(n,m)=C(n,m-1)*(n-m+1)/m利用求组合数公式的变式,可以避免溢出问题,编程采用递归 public static long C(int n, int m) { if(m==1){ return n; } return C(n, m - 1) * (n - m + 1原创 2022-02-25 13:44:32 · 243 阅读 · 0 评论 -
动态规划/路径问题/记忆化搜索-2
leetcode第1575题leetcode-1575统计所有可行路径题目描述给你一个 互不相同 的整数数组,其中 locations[i] 表示第 i 个城市的位置。同时给你 start,finish 和 fuel 分别表示出发城市、目的地城市和你初始拥有的汽油总量每一步中,如果你在城市 i ,你可以选择任意一个城市 j ,满足 j != i 且 0 <= j < locations.length ,并移动到城市 j 。从城市 i 移动到 j 消耗的汽油量为 |locations[i原创 2021-04-13 22:04:25 · 187 阅读 · 0 评论 -
动态规划/路径问题/记忆化搜索-1
leetcode-62题leetcode-62不同路径描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?记忆化搜索这是一道medium难度的题,起点和终点的位置分别为左上角和右上角,每次只能向下或向右移动,只要记录当前位置有多少种路径能够到达终点,最后累加即可先将第一行与第一列初始化为1,因为只能向下或向右,那么位置ma原创 2021-04-13 21:21:02 · 343 阅读 · 0 评论