NYOJ
文章平均质量分 69
Tdyh_NY
这个作者很懒,什么都没留下…
展开
-
整数划分(递归)
非常经典的问题 整数划分把一个正整数n划分成一系列真整数的和 求有多少种划分的方式 第一反应就是递归分治写这道题 但是递归方程没有写出来 参考了别人的博客 他讲的很详细这个人的~~递归思路是酱紫的 首先把这个问题从求解n的划分数问题看成把n划分成一系列小于等于n的数字之和有多少种方法我们设f(n , m)为把n划分成一系列数字之和 这些数字都小于m的划分种数;如果n或者m等...原创 2017-07-18 11:09:24 · 419 阅读 · 0 评论 -
NYOJ 1159 小猴子下落
这道题是考二叉树的结构的比较容易想到 某个小猴子到达某个点的时候 往左子树还是右子树 取决于他是第几个到达该点的 一颗深度为n的树需要往下走n - 1步 首先这是一颗完全二叉树解题的关键在于 对于一个编号为t的节点 他的左子树的编号为t*2 右子树的编号为t * 2 + 1 这是二叉树的性质 #include using namespace std;原创 2017-07-21 16:51:16 · 281 阅读 · 0 评论 -
NYOJ 15 括号匹配(区间dp)
跟括号匹配(一)截然不同 二 不在考栈的应用了 这道题是一道区间dp 这道题写了很久 自己没写出来 参考了网上超过15篇博客才算是略知一二本文提供两种解法方法一:定义dp[i][j] 为从位置I到位置j所需要的括号数量 状态转移的过程是这样的 枚举I和j 或者长度 如果第I个点和第j个点匹配 那么 dp[i][j] 是不是应该等于min(dp[I][j], dp[I原创 2017-07-22 15:26:45 · 432 阅读 · 0 评论 -
NYOJ 17 (最长单调递增子序列) O (n*n) + O(n*lgn)
最长单调递增子序列 应该算是比较经典的问题 记录一下我写这道题的过程吧 首先转换成lcs的做法 我就不说了 我觉得很内个啥 你懂吧 就复杂度依然是n方 很麻烦的方法 方法一 动态规划 O(n*n)思路是这样的 定义dp[i] 为在I点结束的最长单调递增子序列的长度 所以可以便利一遍数组 每次都把之前的东西都找一遍 尝试增大 就这样#include原创 2017-07-22 23:54:22 · 332 阅读 · 0 评论 -
NSWOJ 1228 && NYOJ 132 最长回文子串
给你一个字符串 让你求最长回文子串 、个人认为 如果你想尝试用一般的方法 写这道题 需要注意的点有 1 回文长度为12 回文分为奇数长度和偶数长度两种 如果你没用马拉车算法 这个地方很容易出bug这道题讨厌的地方在忽略标点 需要你开另一个数组存储真正求回文的字符串 刚开始我写的非常繁琐 因为要记录字符的对应位置什么的 开了很多变量来储存这些原创 2017-07-24 23:40:39 · 345 阅读 · 0 评论 -
NYOJ 37 回文字符串
给你一个字符串 然后问你 最少往里添加多少个字母让他变成回文串由于之前做过括号匹配二 所以 看到这道题 就直接往动态规划想了 定义dp[I][j] 为I ~ j中的最大回文数量 什么的 但是想了好久也没有推出来转移方程然后看了下别人写的 看到一句话:翻转字符串 求LCS 于长度作差 既为解 感觉自己在写这道题的时候思维定式 想的太少了#include #inc原创 2017-07-25 09:18:34 · 284 阅读 · 0 评论