- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有这个算法问题要解决,我有一个带数字的 vector ,我必须找到最长的单峰条纹(这意味着它可以增加然后减少,但不能超过一次)。
即:在 vector [4 5 8 5 9 6 3] 中,45863 是单峰条纹,而 458593 不是,因为它增加到 8 然后减少到 5 然后再次增加(这是不允许的)。
使用动态规划,我设法创建了 3 个 vector :第一个具有在元素 x 处停止的最长上升条纹的长度,第二个具有从元素 x 开始的最长下降条纹的长度,第三个是前两个的总和。
基本上,如果我取第三个 vector 的最大值,它就是最长单峰条纹的长度+1(因为元素 x 被计算了两次)。
我现在要做的是显示那条连胜记录。我正在考虑以这种方式使用这些 vector :使用“for”从最大值的位置开始并到达 vector 的开头。我将检查第一个 vector 中的值,如果该值恰好比前一个值小 1(第一次它将是第一个 vector 中最大值的值),我将将该值保留在队列中稍后显示,然后继续。然后,我将使用第二个 vector 对 vector 的第二部分做几乎相同的事情。
我知道这听起来很困惑和复杂,但通过这个例子它会更清楚。
I have this base vector :
9 4 5 6 9 7 8 3 4 3
1 1 2 3 4 4 5 1 2 1 (first vector) = A
4 2 3 3 4 3 3 1 2 1 (second vector) = B
5 3 5 6 8 7 8 2 4 2 (sum of the two) = C
所以这里最长的连胜是 7,峰值是 9(或 8,但那是一样的)。
所以我想做的是:第一个 vector 中峰值的值为“4”,所以我将检查第一个向左的“3”,它是 6,我将其放入队列中,我现在正在寻找第一个“2”是队列中的5,然后是4,因为它是第一个值为“1”的。
然后我将显示队列,然后是峰值,然后对第二部分做同样的事情。我将有 4 5 6 9 7 4 3。(这是好的顺序)。
我的问题是:这每次都能奏效吗?我觉得有些事情可能会搞砸,所以我做了一些测试,每次都很好。我想知道是否有特定的基本 vector 把事情搞砸了。如果可以,请告诉我您的想法,那就太好了!
感谢您阅读所有这些内容,希望有人能帮助我。
最佳答案
我觉得不错。如果正确实现,动态规划解决方案可以保证找到最佳方案,因为它会间接检查所有可能的选择。在这种情况下,序列需要有一个“中心”(它停止增加并开始减少的点)。那就是您要强制执行的参数。
但请注意
The I'm going to check the value in the first vector and if that value is exactely 1 less than the previous value (the first time it will be the value of the maximum in the first vector) I will keep that value in a queue and display it later.
我认为您在这里真正想要的是堆栈,而不是队列,因为您找到的最后一个元素就是您要显示的第一个元素。这适用于第一个 vector 。
更一般地说,您可以使用常规数组,这对两个 vector 都有效。
关于c - 算法 : Unimodal Streak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5677184/
给定一个包含以下数据的简单表格: id | result | played ----+--------+------------ 7 | L | 2012-01-07 6
感谢Mike获取添加创建/插入语句的建议。 create table test ( pid integer not null, date date not null, primary ke
我有这个算法问题要解决,我有一个带数字的 vector ,我必须找到最长的单峰条纹(这意味着它可以增加然后减少,但不能超过一次)。 即:在 vector [4 5 8 5 9 6 3] 中,45863
我认为标题没有清楚地解释我需要做的数据计算,所以我在下面创建了一个简单的可重现示例: 这是输入数据框 structure(list(homePoints = c(0, 0, 0, 0, 0, 0, 0
在尝试计算单个球员的最长连续进球数时,我遇到了一个障碍,>= PHP 运算符未按预期执行。 数据以表格形式呈现如下: date gls -----------------
我正在处理一个查询,试图找出您当前的连续出勤记录。所以换句话说,人 1 参加了最后 5 场事件,人 2 参加了最后 6 场事件,等等。我为此获得的数据文件非常简单: Event Number - Un
这似乎是一个 widespread problem . 我有以下可绘制目录: drwxr-xr-x 18 mike staff 612 Feb 4 17:28 drawable/ drwxr
我有以下数据框: df = pd.DataFrame({'col1':['A','A','A','A','A','A','A','B','B','B','B','B','B','B'],'col2':
有人能在 adb devices 命令中看到 Dell Streak 吗?我在哪里可以获得 USB 驱动程序?到目前为止,这是我唯一无法用于开发的设备...5 小时后我完全累了:( 感谢您的帮助。 稍
是否有某处显示 [设备] > [在 AVD 中复制它的设置] 的指南?如果不是,我应该专门为 Dell Streak 使用什么值? 最佳答案 我没有 Dell Streak,但引用 this我建议您使
我开始为 android 开发,我想在我的 Dell Streak 中测试我的应用程序,它运行 1.6,我的操作系统是 Windows 7。 根据此链接http://developer.android
假设我有一个数字的一维 numpy 数组 myArray = ([1, 1, 0, 2, 0, 1, 1, 1, 1, 0, 0 ,1, 2, 1, 1, 1 ]). 我想创建一个 2D nump
我有一个使用 Rails 构建的个人博客。我想在我的网站上添加一个部分来显示我当前对 github 的贡献。这样做的最佳方式是什么? 编辑:为了澄清,这是我想要的: 我只需要几天的时间。 最佳答案 考
我有一个表格,其中的数据格式 +---------------------+-------------------------------------+--------+ | Start Ti
有一个软件项目,其中包含一些数据,如下表所示。在此表中,我们有开发人员、他在系统中进行某些更改(管理请求)的日期以及这些日期之间的天数差异。 SeqID | developer | MR da
我想在 HTML5 Canvas 上绘制一个沿着复杂轨迹移动的点。我知道该怎么做;参见,例如,Lorenz attractor如下实现。但是对于小点很难跟随。 有没有办法在点后面添加模糊轨迹?我可以保
我正在考虑开发一个内置于 Gmail 中并按需执行操作的小部件。 就像选择一行文本单击我的按钮应该在列表上创建一个任务(比如 asana.com) 我目前正在调查 https://developers
在Player0回答了这个问题之后,我们将如何编写一个公式来找到最长连续日期中的最后一个日期,也就是7月12日?。。同样,有没有办法找到最新一轮的最后日期,也就是7月23日?。。我尝试了使用索引和匹配
在Player0回答了这个问题之后,我们将如何编写一个公式来找到最长连续日期中的最后一个日期,也就是7月12日?。。同样,有没有办法找到最新一轮的最后日期,也就是7月23日?。。我尝试了使用索引和匹配
在Player0回答了这个问题之后,我们将如何编写一个公式来找到最长连续日期中的最后一个日期,也就是7月12日?。。同样,有没有办法找到最新一轮的最后日期,也就是7月23日?。。我已经尝试了各种方法来
我是一名优秀的程序员,十分优秀!