LeetCode 198

来源:互联网 发布:数据流程说明er图 编辑:程序博客网 时间:2024/06/16 01:23

LeetCode 198, House Robber, 这个分治递归写的还是有点问题,可以修正到直接递归rob函数,正常情况下,maxRob的第一个和第二个参数相加就是rob的第一个参数。


int maxRob(int num[], int start, int n){if( n > 3){int splitIndex = n/2 ;int maxContainSplit = maxRob(num,start, splitIndex -1) + maxRob(num, start + splitIndex + 2, n - splitIndex - 2) + num[start + splitIndex];int maxWithoutSplit = maxRob(num,start, splitIndex ) + maxRob(num, start + splitIndex + 1 , n - splitIndex - 1 );return maxContainSplit>maxWithoutSplit?maxContainSplit:maxWithoutSplit;}else{if( n == 1){return num[start];}else if(n == 2){return (num[start] > num[start + 1])?num[start]:num[start + 1];}else if(n == 3){return (num[start + 1] > (num[start] + num[start + 2]))? (num[start + 1]):(num[start] + num[start + 2]);}else{return 0;}}}int rob(int num[], int n) {return maxRob(num,0,n);}


0 0
原创粉丝点击