vector 踩过的坑
今天,做LeetCode上的一道题,198题:Rob House,在纸上画了画,发现了重复的结构,就使用了递归的方式实现的
#include<iostream>
#include<vector> using namespace std; class Solution {
private:
vector<int> memo;
// consider try rob from [index..n-1],it does not mean rob the index house,it just rob from range
// [index...n-1]
int tryRob(vector<int>& nums,int index){
if(index >= nums.size())
return ;
if(memo[index] != -)
return memo[index];
int val = ;
for(int i = index;i<nums.size();i++)
val = max(val,nums[i] + tryRob(nums,i+));
memo[index] = val;
return val;
} public:
int rob(vector<int>& nums) {
for(int i = ; i < nums.size() ; i ++)
// memo[i] = -1;
// 采坑1
// 我们向 vector 中插入元素,是通过push_back()函数,并且注意当vector<int> vec;时,声明的是一个空向量,
// 因此,不能采用下标的方式访问元素,只有! !!先通过push_back()函数加入元素后,才能采用下标的方式
// 访问元素!!!,但是下标方式仅能对确知已存在的元素进行下标操作。如果使用下标定位元素然后修改,
// 只能是修改size以内的元素才能成功.一开始vector为空时,不能对其进行下标赋值。而要用push_back().
memo.push_back(-);
return tryRob(nums, );
}
}; int main(){
vector<int> nums = {,,,,};
cout<<Solution().rob(nums)<<endl;
return ;
}
一开始,运行,不输出结果

我又重新思考了程序的逻辑,觉得没问题,所以想可能是编译的问题,因为,平时对于小程序,我不用IDE的,都是使用Sublime3编辑器的,我把sublime3安装了一些插件,可以编译运行C++,(不过调试功能没配置好,配置完成后,还是有一些问题,找了好久也就没再坚持,毕竟基本上是用来写小的程序而不是大的项目,也不需要调试功能,如果看到这篇博客的同学配置成功的可以告知我,谢谢哦!)也可以写python,markdown等,所以,我直接贴到leetcode 上了,runtime error : reference binding to null pointer of type 'value_type' ,我才意识到,memo没有初始化,就检索了vector初始化,原来,我一直认定的是错误的,我觉得vector支持迭代器,下标访问,就想当然的认为对一个没经过任何初始化的vector可以使用下标操作。既是教训也是经验。写出来共勉。
其实,这题还可以使用动态规划,上面说了,有重叠子问题
class Solution {
public:
int rob(vector<int>& nums){
int n = nums.size();
if(n == )
return ;
// memo[i] : can get the max value if consider rob nums[i...n-1]
vector<int> memo(n,);
memo[n-] = nums[n-];// abvious,nums[n-1,n) has only nums[n-1],
//(nums[i...n-1] ,can repretation [i...n))
for(int i = n-;i>=;i--)
for(int j = i;j<n;j++)
//memo[i] = max(memo[i],nums[j] + memo[j+2])
memo[i] = max(memo[i],nums[j] + (j+<n? memo[j+]:));
return memo[];
}
};
以后遇到坑,会再补充。
vector 踩过的坑的更多相关文章
- 《C++之那些年踩过的坑(三)》
C++之那些年踩过的坑(三) 作者:刘俊延(Alinshans) 本系列文章针对我在写C++代码的过程中,尤其是做自己的项目时,踩过的各种坑.以此作为给自己的警惕. [版权声明]转载请注明原文来自:h ...
- 《C++之那些年踩过的坑(一)》
C++之那些年踩过的坑(一) 作者:刘俊延(Alinshans) 本系列文章针对我在写C++代码的过程中,尤其是做自己的项目时,踩过的各种坑.以此作为给自己的警惕. 转载请注明原文来自: http:/ ...
- 项目中踩过的坑之-sessionStorage
总想写点什么,却不知道从何写起,那就从项目中踩过的坑开始吧,希望能给可能碰到相同问题的小伙伴一点帮助. 项目情景: 有一个id,要求通过当前网页打开一个新页面(不是当前页面),并把id传给打开的新页面 ...
- web开发实战--弹出式富文本编辑器的实现思路和踩过的坑
前言: 和弟弟合作, 一起整了个智慧屋的小web站点, 里面包含了很多经典的智力和推理题. 其实该站点从技术层面来分析的话, 也算一个信息发布站点. 因此在该网站的后台运营中, 富文本的编辑器显得尤为 ...
- "开发路上踩过的坑要一个个填起来————持续更新······(7月30日)"
欢迎转载,请注明出处! https://gii16.github.io/learnmore/2016/07/29/problem.html 踩过的坑及解决方案记录在此篇博文中! 个人理解,如有偏颇,欢 ...
- 【转载】Fragment 全解析(1):那些年踩过的坑
http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使 ...
- Redis Cluster踩过的坑
Redis Cluster踩过的坑请参考如下链接:http://www.iteye.com/blogs/subjects/Redis_Cluster_Devops
- 第八篇:web之前端踩的一些坑
前端踩的一些坑 前端踩的一些坑 本节内容 事件代理 清除标签的所有事件 bootstrap的模态框自定义方法 ajax在django里面实现post提交 ajax提交数据嵌套 1.事件代理 之前写 ...
- 使用ffmpeg视频编码过程中踩的一个坑
今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果: ...
随机推荐
- Docker - Deepin中docker不能启动容器,-d也无效
问题重现 1. 搭建mysql docker run -p 3306:3306 --name docker-mysql-5.7 -v $PWD/conf:/etc/mysql/conf.d -v $P ...
- oracle-数据库被注入恶意攻击程序的案例恢复
问题描述: Oracle数据库由于重启之后无法正常启动,tab$被清空(ORA-600 16703故障解析—tab$表被清空),导致数据库启动异常 ORA-600 16703报错 一.检测方法: 如下 ...
- Linux - seq
1. 概述 生成序列的命令 之前貌似写过 seq 命令, 这次单独拉出来再写一次吧 节操先放一放 2. 命令 1. 帮助 命令 # 输出我就不打了, # 这个命令可用, 证明组件可用 > seq ...
- 自己centos7成功的修改了主机名(记录了该改哪些文件)
1.更改/etc/hosts 方法(1)可以直接的去更改这个文件,更改的格式:直接vi编辑器打开,之后直接写上自己想要的主机名字就好,不用写成键值对的形式 [root@localhost etc]# ...
- 题解 SP8284 WEIGHT - Weighted Sum
SP8284 WEIGHT - Weighted Sum 题意描述 给出长度为n(n<=1e6)的序列A, A中元素可能为正数,可为负数或0,.让你构造一个长度为n的序列W,给这些整数A赋权,使 ...
- Docker - 解决docker-machine create下载boot2docker.iso时慢的问题
解决步骤 从https://github.com/boot2docker/boot2docker/releases下载iso到~/.docker/machine/cache/里 docker-mach ...
- css中定义变量
css中定义变量 定义变量可分多种情况: 1.定义全局变量 :root { --borderColor: #ccc;} 2.定义某元素下的变量 .look{ --borderColor: #ccc;} ...
- opencv python:图像梯度
一阶导数与Soble算子 二阶导数与拉普拉斯算子 图像边缘: Soble算子: 二阶导数: 拉普拉斯算子: import cv2 as cv import numpy as np # 图像梯度(由x, ...
- js递归生成树形下拉菜单
需求:我需要把一个单表的数据转换成类似菜单那种如图所示:我呢需要把这个菜单树放入到下框里面去如图所示: 下面是实现思路:1.第一步1.1var afTypeJson=${afTypeJson}// 这 ...
- 吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:LSTM网络层详解及其应用
from keras.layers import LSTM model = Sequential() model.add(embedding_layer) model.add(LSTM(32)) #当 ...