Tag: algorithm

你如何从一条线的某个垂直距离find一个点?

我在窗口中绘制一条线,并让用户拖动它。 所以,我的线由两个点定义:(x1,y1)和(x2,y2)。 但现在我想在我的线的末端画“帽子”,就是说,在我的每一个端点上都有短垂线。 帽应该是N个像素的长度。 因此,为了在终点(x1,y1)绘制我的“帽”线,我需要find两个点形成一个垂直线,并且每个点都离开点(x1,y1)N / 2个像素。 那么,如果你需要在一个已知线的终点(x1,y1)的一个垂直距离N / 2处(即由(x1,y1)和(x2,y2)?

如何find一个string的不同子序列的数量?

这是另一个问题 ,如何find一个string的不同子序列的数量? 例如, input AAA ABCDEFG CODECRAFT 产量 4 128 496 我怎么解决这个问题 ?

确定给定代码的复杂性

给定一段代码,你将如何确定一般的复杂性。 我发现自己对Big O的问题感到困惑。 例如,一个非常简单的问题: for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.println("*"); } } 电讯局长以类似组合的方式解释了这一点 就像这样,select2 =(n(n-1))/ 2 = n ^ 2 + 0.5,然后去掉这个常数使得它变成n ^ 2。 我可以把inttesting值,并尝试但这个组合的事情是怎么进来的? 如果这是一个if语句呢? 复杂性如何确定? for (int i = 0; i < n; i++) { if (i % […]

旋转图像并裁剪黑色边框

我的应用程序:我想旋转一个图像(使用OpenCV和Python) 目前,我已经开发了旋转input图像的下面的代码,用黑色边框填充它,给我答:我想要的是B-旋转图像中最大的可能区域裁剪窗口。 我称之为轴alignment边界框。 这与旋转和裁剪基本相同,但是我无法得到有关该问题的答案。 此外,答案显然只适用于方形图像。 我的图像是矩形的。 代码给A: import cv2 import numpy as np def getTranslationMatrix2d(dx, dy): """ Returns a numpy affine transformation matrix for a 2D translation of (dx, dy) """ return np.matrix([[1, 0, dx], [0, 1, dy], [0, 0, 1]]) def rotateImage(image, angle): """ Rotates the given image about it's centre """ image_size = […]

基本recursion,检查平衡括号

我已经编写了过去使用堆栈来检查平衡方程的软件,但是现在我被要求recursion地编写一个类似的algorithm来检查正确嵌套的括号和括号。 好例子:()[]()([]()[]) 不好的例子:((]([)] 假设我的函数被调用:isBalanced。 应该每次通过评估一个较小的子string(直到达到左边的基本情况)? 或者,我是否应该总是评估整个string并向内移动索引?

为什么合并sorting最差情况运行时间O(n log n)?

有人能用简单的英语给我解释一下吗?还是一个简单的解释方法?

非常快的3D距离检查?

有没有办法做一个快速和肮脏的3D距离检查结果是粗糙的,但它是非常非常快? 我需要做深度分类。 我使用STL sort如下: bool sortfunc(CBox* a, CBox* b) { return a->Get3dDistance(Player.center,a->center) < b->Get3dDistance(Player.center,b->center); } float CBox::Get3dDistance( Vec3 c1, Vec3 c2 ) { //(Dx*Dx+Dy*Dy+Dz*Dz)^.5 float dx = c2.x – c1.x; float dy = c2.y – c1.y; float dz = c2.z – c1.z; return sqrt((float)(dx * dx + dy * dy + dz * dz)); } […]

find三重中间值的最快方法是?

给定是三个数值的数组,我想知道这三个数的中间值。 问题是, find三者中 最快的方法是什么? 我的方法是这种模式 – 有三个数字,有六个排列: if (array[randomIndexA] >= array[randomIndexB] && array[randomIndexB] >= array[randomIndexC]) 如果有人能帮我find一个更优雅 , 更快捷的方法,这将是非常好的。

计算所有值的总和超过双倍限制的平均值是一个很好的解决scheme?

我有一个要求来计算一个非常大的双打(10 ^ 9值)的平均值。 这些值的总和超过了双倍的上限,所以有人知道计算平均值的任何巧妙的小技巧,也不需要计算总和? 我正在使用Java 1.5。

最快的方法来sorting在JavaScript中的32位有符号整数数组?

_radixSort_0 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; /* RADIX SORT Use 256 bins Use shadow array – Get counts – Transform counts to pointers – Sort from LSB – MSB */ function radixSort(intArr) { var cpy = new Int32Array(intArr.length); var c4 = [].concat(_radixSort_0); var […]