- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 04动态规划进阶---背包问题
背包问题可能是动态规划算法中最经典的问题了,三种最常见的背包问题分别是0-1背包问题,完全背包问题和多重背包问题。关于这三种背包的讲解网上有很多,但是很多只是给出状态转移方程或写出伪代码,或者是只给出0-1背包和完全背包的代码但并没有多重背包的代码,因此本文在这里将系统地总结这三种背包问题的最佳解法及相应java代码。题1.经典的0-1背包问题。给定一组物品,每种物品都有自己的重量和价格,在限
2017-10-11 10:16:28
564
原创 03动态规划基础---机器人走方格问题
题目1.对于m*n的方格(注意m,n为x,y轴顶点数),机器人只能向右走或向下走,求机器人从方格左上角走到右下角共有多少种走法。对于2*2的方格有两种走法,3*3的方格有6种走法,求对m*n的方格有多少种走法。首先分析题目的状态转移方程,因为机器人只能向右或向下走,对于非边界的每一个顶点array[i][j],都有dp[i][j]=dp[i-1][j]+dp[i][j-1],其中dp[i][j
2017-10-10 21:29:45
1334
原创 02动态规划基础---最大连续子序列的和
关于动态规划的相关理解我在上一篇博客动态规划基础01---最长递增子序列中写过,这一篇我们主要练习类似的dp算法题。题1.对于包含任意正负数的整型数组,求它的最大连续子序列和。比如说,数组array={1,2,3,-7,4,5,6},则它的最大连续子序列为4,5,6,和为15.首先还是先分析题目的状态转移方程,设maxCur[i]为前i个数字的最大连续子序列和,则当 maxCur[i-
2017-10-10 21:14:25
353
原创 01动态规划基础---最长递增子序列长度
最近在做动态规划的专题训练,准备写一个动态规划的专栏,因为题目较多,打算分几篇来写。对于动态规划的概念网上有很多,个人理解对于动态问题,最重要的是写出状态转移方程,其次是写出边界条件,最后根据状态转移方程和边界条件进行代码编写。需要注意的是,与递归方法相比,动态规划是自底向上的,而递归是自顶向下的。所以对于递归问题,我们首先要写出顶层的递推公式,再写出底层的递推出口;而对于动态规划问题,我们往
2017-10-10 20:41:18
258
1
原创 Java面试常考题--自定义简单HashMap类
自定义实现简单HashMap类,美团一面答得不好的一道题,回来之后自己又实现了一遍。简易版HashMap,能实现最基本的put()和get()操作。package JavaLearning;import java.util.ArrayList;public class MyHashMap { Object key; Object value; Object [] arrays=
2017-09-20 20:42:18
287
转载 JAVA贪心算法实现背包问题
以下贪心算法相关概念及题目转载自http://blog.csdn.net/effective_coder/article/details/8736718,java实现代码为博主原创贪心算法思想:顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心
2017-09-12 19:26:33
2549
转载 Spring 控制反转(IOC)与依赖注入(DI)
最近在学习Spring的一些基础知识与重要概念,以下内容转载自http://jinnianshilongnian.iteye.com/blog/1413846,该博客通俗易懂,对理解Spring IOC和DI很有帮助,与网友共同学习。2.1.1 IoC是什么Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意
2017-09-12 10:48:43
180
原创 第一次面试经验总结
第一次接到电话要我到某互联网公司面试,公司是做地理信息系统的。由于该公司是在智联上找到我的,而且现在是九月初,我估计他们是社招。不过凭着锻炼自己,打怪升级的心态我还是去了,毕竟大公司很难进入面试,光学校排名和在线笔试就能刷不少人。不过有一点坑的是,我开始以为面试地点不远,结果早上坐出租时才知道巨远,光从学校坐过去就花了近六十大洋,所以回学校的时候乖乖坐公交,转了两趟车,坐到想吐~~所以提醒大家,去
2017-09-11 16:35:25
783
原创 C++中*与&的使用和辨析
在C/C++中,关于*与&,在不同情况下,有不同含义:(1)*的使用 a)定义时,*声明创建的为指针变量,如 int a=0;int* p=&a; b)在使用指针变量时,*表示取值操作,对于指针p,会取出p指向变量的值,如 cout(2)&的使用 a)在与指针联合使用,如 int a=0;int *p=&a时,表示取a的地址,然后赋给指针p; b)作引用类型使用,如 int a=0;int b
2017-09-03 11:51:07
585
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人