动态规划
月落乌啼霜月落
在减肥路上越走越远的废宅。。。
目前坐标 厦门U3D工程师
~~~算法赛高!!!!!
展开
-
动态规划?
Think: 遍历时 累加为负数的时候就归零, 因为为负数时肯定不可能是最大值; 然后题目的周期 是 5 所以 进行 i + 5运算。 每次遍历结束后进行比较,最后输出MAX最大值。Problem Description动态规划作为《运筹学》的一个分支,被广泛的用于解决较为复杂的经济管理问题,以达到的最优抉择,获得最大经济收益为目的。也因其多变性,非常的频繁的出现在信息学竞赛的赛场上。动态规划原创 2017-03-18 19:29:20 · 261 阅读 · 0 评论 -
递归的函数
Think: 递归代码容易理解, 但是很容易TLE 所以就定义 一个三维数组来进行储存元素~~~~ 然后以后调用就不用重复跑递归函数浪费时间。Problem Description 给定一个函数 f(a, b, c): 如果 a ≤ 0 或 b ≤ 0 或 c ≤ 0 返回值为 1; 如果 a > 20 或 b > 20 或 c > 20 返回值为 f(20, 20, 20); 如果原创 2017-04-15 16:28:13 · 380 阅读 · 0 评论 -
上升子序列
Think: 条件(a[i] > a[j] && dp[i] < dp[j] + a[i]) 要同时满足上升和 最大子序列; dp的过程就是利用dp[i]和它之前元素的最大子序列dp[j] + a[i]进行比较,将最大值保存在dp[i]中,表示从第i个元素 最大上升子序列的和, 最后遍历。因为都是非负整数 所以 开始 遍历 时 MAX为负数。。。。Problem Description 一原创 2017-04-15 16:34:38 · 492 阅读 · 0 评论 -
数字三角形问题
Think:dp 条件 每次选择相加最大的那一组。。if (b[i][j] > b[i][j + 1]) b[i - 1][j] = b[i][j] + a[i - 1][j]; else b[i - 1][j] = b[i][j + 1] + a[i - 1][j]; 从下往上推原创 2017-04-15 16:41:22 · 544 阅读 · 0 评论 -
小鑫去爬山
Think: 恰好与数字三角形问题相反, 这题求得是最小数 所以 只要将 原先的 > 改为 < 即可~~~Problem Description 马上就要放假了,小鑫打算去爬山。 小鑫要去爬的这座山有n个海拔区间。为了清楚描述我们可以从上到下标号1到n。 第i个区间有i个落脚点,每一个落脚点都有一个危险值。 小鑫需要在第n个海拔区间挑选一个点向上爬,爬到第1个海拔区间(也就是山顶)。他必原创 2017-04-15 16:46:29 · 295 阅读 · 0 评论 -
取数字问题
Think: 因为只能往2个方向走, 所以只需遍历每个方向, 然后对其进行判断。 特别要注意SUM < 0的情况 因为题目规定 和正整数, 所以当SUM < 0时flag依旧为false。。 最后根据flag的状态来控制输出。Problem Description 给定M×N的矩阵,其中的每个元素都是-10到10之间的整数。你的任务是从左上角(1,1)走到右下角(M,N),每一步只能够向右原创 2017-04-15 17:07:43 · 264 阅读 · 0 评论 -
走迷宫
Think: 很裸的DFS题~~~ 所以直接上DFS了, 用一个flag来标记是否存在输出。 MAP数组用来储存, vis用来标记是否访问过。 然后changX changY 两个数组表示每次点的变化方向。 变换后记住判断是否越界。 每次遍历 DFS(tx, ty) Problem Description 有一个m*n格的迷宫(表示有m行、n列),其中有可走的也有不可原创 2017-04-15 19:37:05 · 408 阅读 · 0 评论 -
免费馅饼
Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身原创 2017-04-15 20:19:08 · 588 阅读 · 0 评论 -
马的走法
Think: 本篇blog采用 DFS的回溯法 解题~~~~思路: 定义 2个 数组来标记 马可以走的各自, 然后 用DFS搜索就可以了Problem Description在一个4*5的棋盘上,马的初始位置坐标(纵 横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字)。如果马的初始位置坐标超过棋盘的边界,则输出ERROR。例如初始位置为4 6,则输出原创 2017-08-02 20:22:34 · 607 阅读 · 0 评论