入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

几种vector的初始化方法

创建时间:2017-06-24 投稿人: 浏览次数:717

题目:

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。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像