几种vector的初始化方法
题目:
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. |
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
