几种vector的初始化方法

来源:互联网 发布:淘宝出售京东e卡 编辑:程序博客网 时间:2024/06/06 18:10

题目:

1005. 最大和



时间限制:1秒    内存限制:256兆
题目描述
从数列A[0], A[1], A[2], ..., A[N-1]中选若干个数,要求相邻的数不能都选,也就是说如果选了A[i], 就不能选A[i-1]和A[i+1]. 求能选出的最大和.
 
1 <= N <= 100000, 1 <= A[i] <= 1000
 
请为下面的Solution类实现解决上述问题的函数maxSum,函数参数A是给出的数列,返回值为所求的最大和.
 
class Solution {
public:
    int maxSum(vector<int>& A) {
          
    }
};
 
例1:A = {2, 5, 2},答案为5.
 
例2:A = {2, 5, 4},答案为6.
代码:

#include <vector>#include <algorithm>#include <iostream>#include <cstdlib>using namespace std;class Solution {public:    int maxSum(vector<int>& A) {int size = A.size();        vector<int> b(size);b[0] = A[0];b[1] = max(A[0],A[1]);if(size == 0) return 0;if(size == 1) return b[0];if(size == 2) return b[1];for(int i = 2; i < size; i++){b[i] = b[i-1] > b[i-2]+A[i] ? b[i-1] : b[i-2]+A[i];}return b[size-1];    }};int main(){int array[] = {1,2,3,4,5,6,7};vector<int> temp(array,array+7);Solution a;cout<<a.maxSum(temp)<<endl;system("pause");}
本题使用的算法是动态规划。
知识点:
vector的初始化:
vector<T> v(n,i)形式,v包含n 个值为 i 的元素:      vector<int> ivec(10,0);vector<T> v(v1)形式,v是v1 的一个副本:      vector<int> ivec1(ivec);vector<T> v(n)形式,v包含n 个值初始化的元素:       vector<int> ivec2(10);数组初始化vector:      int iarray[]={1,2,3,4,5,6,7,8,9,0};      size_t count=sizeof(iarray)/sizeof(int);      vector<int> ivec3(iarray,iarray+count);使用memset初始化vector:      vector<int> vec(10,1);      memset(vec.data(),0,vec.size()*sizeof(int));


时间限制:1秒    内存限制:256兆
题目描述
从数列A[0], A[1], A[2], ..., A[N-1]中选若干个数,要求相邻的数不能都选,也就是说如果选了A[i], 就不能选A[i-1]和A[i+1]. 求能选出的最大和.
 
1 <= N <= 100000, 1 <= A[i] <= 1000
 
请为下面的Solution类实现解决上述问题的函数maxSum,函数参数A是给出的数列,返回值为所求的最大和.
 
class Solution {
public:
    int maxSum(vector<int>& A) {
          
    }
};
 
例1:A = {2, 5, 2},答案为5.
 
例2:A = {2, 5, 4},答案为6.