#问题描述:动态规划第一题
##题目描述:输入一行空格隔开数字,选取数字组合使得和最大(选取数字不能相邻)
##代码:
#include <iostream>
#include <vector>
#include <stdlib.h>
using namespace std;
int max_res(int n,vector<int> arr_f);
int main()
{
vector<int>arr;
int num;
cin>>num;
arr.push_back(num);
// int i=0;
// cout<<arr[0]<<endl;
while(cin.get()!='\n')
{
cin>>num;
arr.push_back(num);
// i++;
// cout<<arr[i]<<endl;
}
// cout<<arr.size()<<endl;
cout<<max_res(arr.size(),arr);
return 0;
}
int max_res(int n, vector<int>arr)
{
if(n==1)
return arr[0];
if(n==2)
return max(arr[0],arr[1]);
else
return max(max_res(n-2,arr)+arr[n-1],max_res(n-1,arr));
}
样例输入:1 2 4 1 7 8 3
输出:15
###注意
1.输入一行数字,空格隔开:
用cin.get()判断是否遇到空格
2.将vector作为函数输入的几个形式:(转载)
https://blog.csdn.net/w_linux/article/details/72417896