题目:在数组中,取数字来求和,求最大值多少。(要求:取的数字不能够相邻)
思路:
1,非递归思路:至少要隔一个数字,所以将他们分为奇数和偶数位,然后分别在计算和的时候是和前一个的奇/偶的值求最大值,因为奇数偶数天然分开的,求到奇数位的最大和的时候拿它和前一个偶数位比较。
2. 递归思路:f(n)=f(n-2)+a[n] 与 f(n-1) 的最大值。
好了,递归思路出来了用循环来做。
代码:
class Solution {
public:
int rob(vector<int>& nums) {
int n=nums.size();
int tmp1,tmp2;
tmp1=tmp2=0;
for(int i=0