20200903打家劫舍(动态规划)

tech2024-08-11  45

 

public class 打家劫舍 { //每一个房间都有一定金钱,不能连着偷两个 //input:【1,2,3,1】 out:4(1+3=4) //input:【2,7,9,3,1】 out:12(2+9+1) public static void main(String[] args) { int[] room=new int[]{2,7,9,3,1}; System.out.println((out(room))); } public static int out(int[] nums){ if(nums.length==0||nums==null) return 0; if(nums.length==1) return nums[0]; if(nums.length==2) return Math.max(nums[0], nums[1]); int[] dp=new int[nums.length];//金钱 dp[0]=nums[0]; int result=nums[0]; for(int i=2;i<nums.length;i++){ dp[i]=Math.max(dp[i-2]+nums[i], dp[i-1]);//偷,不偷 result=Math.max(result,dp[i]); } return result; } }

 

最新回复(0)