- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以下是我的问题的可视化:
我需要找到最有价值的菱形存储在一个广场。
我想了好几天,但直到现在,我还没有找到其他东西,除了使用“for loop”和检查每一个可能的菱形。你们觉得怎么样?这是我唯一的办法吗:p谢谢:)
最佳答案
我的想法是:
第一次迭代,你遍历矩阵,但是是对角的。你从最左上角开始,在那里你可以适合你的菱形(或菱形的一侧),你看菱形的大小所覆盖的元素。
首先检查elems(0,1)和(1,0)(a)
接下来检查(0,2)和(1,1)(b)
(1,1),(2,0)(b)
(0,3),(1,2)(c)
(1,2),(2,1)(c)
…
我希望你拿到考试命令。对这些元素做的就是求和:e(0,1)+e(1,0)=11,e(0,2)+e(1,1)=3等等。您必须注意,当您使用同一行上的元素(上面用相同字母标记的元素)时,您不必重新计算总和:有一个元素输出,一个元素输入,因此您只访问两个元素来获得新的总和。
第二次迭代,你对角遍历矩阵,但从另一个侧面。从右上角开始计算之前计算的和所以,你要检查的第一对是(0,3),(1,4)。你做的和你以前做的完全一样:你重新计算总和。
现在,在第二次迭代结束时,每个处理过的字段实际上包含稀疏菱形的和,该菱形在该字段中有一个上角。3x3菱形的示例如下图所示:
第三步,可以看到一个大小为n的稀疏菱形“丢失”了另一个稀疏菱形——大小为n-1的菱形。迭代1和迭代2正是为图像中所有大小为n的稀疏菱形求和的过程因此,作为第三步,我们再次运行第一次和第二次迭代,但不是使用我们要搜索的大小(n),而是使用大小(n-1)。注意,对大小1的“搜索”等于输入矩阵(例如,如果n=2,对于第三步,您不必计算任何东西)。
最后,对于顶部位置(0,2)的3x3菱形,您感兴趣的和是前两次迭代的(0,2)和,以及第三步的(1,2)和。可以将这两个元素相加:对于前两个过程的结果矩阵中位于位置(x,y)的每个元素,可以将第三步结果矩阵中位于位置(x,y+1)的元素相加。
现在你只需要找到最大值,你就可以得到菱形的最大值和位置的答案。
你在4遍中完成这一切(当你计算第二遍时,你可以跟踪最大值)——所以这将给出O(4*n^2) = O(n^2)
的复杂性,其中n
是正方形大小的大小。
希望很清楚,如果我的回答有问题,请澄清。
2x2菱形示例
第1遍
-1 11 3 7 5 * / * * *
-1 9 14 12 3 / * * * *
-1 12 18 4 6 * * * * *
-1 11 3 6 2 * * * * *
-1 -1 -1 -1 -1 * * * * *
-1 25 15 10 -1 * * * \ *
-1 27 18 18 -1 * * * * \
-1 15 24 6 -1 * * * * *
-1 -1 -1 -1 -1 * * * * *
-1 -1 -1 -1 -1 * * * * *
1 2 2 2 2
9 1 5 3 1
8 9 9 2 3
3 9 2 3 1
2 1 3 1 1
-1 26 20 13 -1
-1 36 27 20 -1
-1 24 26 9 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1
是菱形边不适合的地方——未定义和。你可以在你的程序中以任何你想要的方式标记它(特别是如果你的矩阵中有负数的话)。在第二个过程中,可以将任何具有未定义元素的总和设置为未定义。
/
或
\
标记
O(n^2)
(其中
n
是正方形大小的大小),而不仅仅是2x2菱形。
z[][]
(甲)
f[][]
(b)
s[][]
(b)
f[0][2] = z[0][2] + z[1][1] + z[2][0] == 11
(丙)
f[0][3] = z[0][3] + z[1][2] + z[2][1] == 16
(丙)
f[1][2] = f[0][3] - z[0][3] + z[3][0] == 17
(丙)
f[0][4] = z[0][4] + z[1][3] + z[2][2] == 14
(四)
f[1][3] = f[0][4] - z[0][4] + z[3][1] == 21
(四)
f[2][2] = f[1][3] - z[1][3] + z[4][0] == 20
(英)
f[1][4] = z[1][4] + z[2][3] + z[3][2] == 5
符号的元素)和要进去的元素(带有
f[2][3] = f[1][4] - z[1][4] + z[4][1] == 5
符号的元素)。
-1 -1 11 16 14
-1 -1 17 21 5
-1 -1 20 5 9
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 41 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 25 15 10 -1
-1 27 18 18 -1
-1 15 24 6 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 59 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 -1 -1
关于algorithm - 在二维阵列中找到菱形的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12819606/
我尝试创建菱形 View 。我想在弹出窗口中使用它。有谁知道该怎么做? 感谢任何建议。 最佳答案 看看 PathShape : 看起来您只需将具有正确线条/填充的路径传递给它,然后将其绘制在弹出对话框
我正在努力弄清楚如何添加像此处图片那样的边框。菱形/方形旋转边框。我试过边框图片,但似乎无法加载它们。 这两个 border-image: url('path-to-your-png') 33
当我知道每个 Angular 的度数时,如何使用 css 创建四边形。 我已经尝试通过变换和倾斜重新创建一个四边形。 但是,这并不是很好。 这是我尝试存档的内容。 具体要求是: 以此为背景的一个 di
本人是一名python初学者,刚刚看到一道有趣的python问题,“用python如何在编译器中打印出菱形图案?” 因此决定尝试一下,代码不多,仅供参考。 代码
我是jointJS的新手,我需要使用JointJS创建自定义形状,我尝试使用矩形创建菱形,使其高度和宽度相同,然后旋转45度,如下所示, var diamond = new joint.shapes
我的程序打印出这样的钻石: ...............* ..........* * * .....* * * * * * * * *
我正在使用 SMFL/C++ 制作一个 2D 等距游戏引擎,我在进行等距计算时得到了这个: 这是我在 2D 引擎中计算等距坐标的公式:对于 I-J 坐标,我有: x = (I - J) * (tile
我正在尝试创建一个横跨页面的菱形样式链接菜单。我还会有一些 java 脚本下拉菜单。像这样的东西:\\\\ 我在 div 上使用倾斜 css3 属性,但它们也会倾斜文本,有没有办法取消倾斜 div 中
我想制作一个带有图像背景的菱形。我能做到,唯一的问题是图像似乎同时旋转,这是我不想要的。这也需要在ie8中工作 fiddle :http://jsfiddle.net/zangief007/2bft2
我正在抓取一些韩语文本,大部分字符显示了 99.9%,但其余字符如下所示。 �Z 例如,它应该抓取“고소를해줫어”,但在我的输出中它给了我“고소를해�Z어”。 我知道这是一个编码问题,我只是不知道如何
我正在尝试用 Java 编写一个程序,从用户那里捕获一个整数(假设数据有效),然后根据整数的大小输出一个菱形,即用户输入 5 ,输出将是: --*-- -*-*- *---* -*-*- --*--
我最近将数据库的内容从一台主机移到了另一台主机。在那之后我得到了奇怪的字符,比如两个菱形或菱形,里面有问号而不是瑞典字符 ä。 我之前在第一台主机上遇到过这个问题,然后我添加了这段代码,它工作正常 $
是否可以使用react-native创建菱形 View ? 这是我想要的图片: 我尝试使用边框样式,但无法实现。 最佳答案 我在这里得到了解决方案:https://rnplay.org/apps/58
我正在尝试使用嵌套的 for 循环来显示星号菱形。 这是迄今为止我的代码: public class Diamond { public static void main(String[] ar
我正在做一个元素,我有一个需要响应的 div 钻石图片。 下图显示了我创建的 div 中的钻石,但它不适用于所有尺寸。我希望钻石能够对浏览器大小做出响应,因此它始终适合。 我有a jsFiddle ,
三角形 等腰直角三角形1 2.7 ? 1
我现在正在 ArgoUML 中设计 UML 事件图。 我知道如果我想设计如下条件: if(condition) { doTrueAction(); } else { doFalseAc
我有 2 个 SKSpriteNode: 一个简单的正方形 (A) 旋转(-45°)(B)的同一个正方形 我需要随时检查另一个 SKSpriteNode(一个球)的中心是否在这些方 block 之一内
1.输出上三角形 第一行1个星,第二行3个星,第三行5个星,第四行7个星,第五行9个星。 分析:三角形的形状由输出的空白和星组成,通过分析每一行输出几个空格,几个星,就可完成输出三角形的工作。
我想在 Swift 中创建一个带有 titleLabel 的菱形 UIButton。我的问题是,titleLabel 文本缩小并且仅显示三个点。如何扩展 titleLabel 的框架以获得足够的标题空
我是一名优秀的程序员,十分优秀!