|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 糖逗 于 2020-4-12 00:15 编辑
题目描述:
- 给定一个数组,数组中的数不能连着取,求最大的和。
- 如[7,5,4,2,1]最大的为7+4+1
复制代码
- #include <iostream>
- #include <vector>
- using namespace std;
- int dfs(vector<int> & input, int i, vector<int> & visit){
- if(i >= input.size()) return 0;
- if(visit[i] > 0) return visit[i];
-
- int temp = 0;
- for(int j = i+2; j < input.size(); j++){
- temp = max(temp, dfs(input, j, visit));
- }
- visit[i] = temp + input[i];
- return temp + input[i];
- }
- int solution(int* input, int len){
- int res = 0;
- vector<int> temp;
- for(int i = 0 ; i < len; i++){
- temp.push_back(*(input + i));
- }
-
- vector<int> visit (len, 0);
- for(int i = 0; i < len; i++){
- if(visit[i] == 0){
- res = max(res, dfs(temp, i, visit));
- }
- else{
- res = max(res, visit[i]);
- }
-
- }
- return res;
- }
- int main(void){
- cout << "send the len" << endl;
- int len;
- cin >> len;
- cin.clear();
- int number;
- int input[len];
- int i = 0;
- while(cin >> number){
- input[i] = number;
- i++;
- }
- cout << solution(input, len);
- return 0;
- }
复制代码
注意事项:
1.运用了动态规划和深度优先搜索,想法源自leetcode329. 矩阵中的最长递增路径。
2.使用数组不习惯,自行换成了vector。 |
|