几种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。
- 上一篇:没有了
- 下一篇:没有了