Java怎么解决打家劫舍的问题

免费建站   2024年05月09日 11:10  

本篇内容主要讲解“Java怎么解决打家劫舍的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么解决打家劫舍的问题”吧!

如果要打劫第n家,就必然不能打劫第n-1家,所以打劫第n家得到的钱一共是第n家的钱加上前n-2家获得的最多的钱,即:f(n-2)+nums(n),如果不打劫第n家,获得的最大收益就是f(n-1),两者我们要去较大的那个,所以动态转移方程是:

f(n)=max(nums[n]+f(n-2),f(n-1))

packagemainimport"fmt"funcmax(a,bint)int{ifa>b{returna}returnb}funcrob(nums[]int)int{iflen(nums)==0{return0}iflen(nums)==1{returnnums[0]}dp:=make([]int,len(nums))dp[0]=nums[0]dp[1]=max(nums[0],nums[1])maxVal:=dp[1]fori:=2;i<len(nums);i++{dp[i]=max(dp[i-1],dp[i-2]+nums[i])maxVal=max(maxVal,dp[i])}returnmaxVal}funcmain(){fmt.Println(rob([]int{1,2,3,1}))fmt.Println(rob([]int{2,7,9,3,1}))}

到此,相信大家对“Java怎么解决打家劫舍的问题”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部