Tag: 算法

SPOJ你能回答这些问题吗?

我试图在SPOJ上解决这个问题。 我在段树部分发现了这个问题,所以我很确定可能有一些使用段树的可能解决方案。 但是我无法提出应该存储在树节点中的元数据。 可以使用Kadane的Algo计算最大总和。 但是如何使用分段树来计算它。 如果我们只存储algo的输出,该范围对于该特定范围的查询是正确的,但父母使用该值是不正确的。 如果我们存储更多信息,如负和前缀以及负和后缀。 我能够解决一些测试用例。 但它并不完全正确。 请提供一些指示,说明如何处理元数据以解决此特定问题。 谢谢你的帮助。

生成数字组合而不重复的算法

我在这里检查了几乎所有类似的post,但我无法弄清楚我怎么能做我想要的。 我正在尝试的是在C程序中输入一个输入,比如说4号,程序在数组中返回以下数字: 1 2 3 4 12 13 14 23 24 34 123 134 124 1234 更清楚:如果输入数字是4,那么我想使用数字1-4并生成所有可能的数字组合(从1位组合到4位组合),没有数字重复。 我尝试了以下代码: #include /* Prints out a combination like {1, 2} */ void printc(int comb[], int k) { printf(“{“); int i; for (i = 0; i = 0) && (comb[i] >= n – k + 1 + i)) { […]

如何在C中逐字翻译句子?

#include int main(void) { int i,j; int wordstart = -1; int wordend = -1; char words[]= “this is a test”; char temp; // Reverse each word for (i = 0; i < strlen(words); ++i) { wordstart = -1; wordend = -1; if(words[i] != ' ') wordstart = i; for (j = wordstart; j < strlen(words); […]

将任意大数转换为256

我有一些非常大的长度可能高达50位数。 我把它作为字符串输入。 但是,我需要对它执行操作。 所以,我需要将它们转换为适当的基础,比方说256。 这样做的最佳算法是什么?

具有数据依赖性的for循环矢量化

我有基于BiCCG(共轭梯度)的矩阵求解器的实现,它也考虑了周期性。 碰巧的情况是,实现是计算密集型的,并且由于依赖性问题,循环不会自动向量化。 我进行了一些探索,似乎红黑高斯seidel算法比vanilla版本(也有类似的依赖性问题)更有效并行化。 可以更改此循环/算法,以便可以有效地进行矢量化吗? // FORWARD #pragma omp for schedule(static, nx/NTt) for (i=1; i<=nx; i++) for (j=1; j<=ny; j++) for (k=1; k<=nz; k++) { dummy = res_sparse_s[i][j][k]; dummy -= COEFF[i][j][k][7] * RLL[i-1][j][k]; if (PeriodicBoundaryX && i==nx)dummy -= COEFF[i][j][k][8] * RLL[1 ][j][k]; dummy -= COEFF[i][j][k][2] * RLL[i][j-1][k]; if (PeriodicBoundaryY && j==ny) dummy -= COEFF[i][j][k][3] * RLL[i][1 […]

无法快速排序变得稳定排序?

方法1 CAR Hoare引入了分区逻辑(如下所示),这是在学校教授的, low = pivot = 0; i = 1; j = high = listSize-1; while (true) { while (a[i] <= a[pivot] && (i = a[pivot] && (j > low)) { j = j – 1; } if (i >= j) break; swap(a[i], a[j]) } swap(a[j], a[pivot]); // pivot element is positioned(once) return j; […]

从这个例子中确定LR(k)的k?

我准备了以下语法,生成C逻辑和整数算术表达式的子集: Expression: LogicalOrExpression LogicalOrExpression ? Expression : LogicalOrExpression LogicalOrExpression: LogicalAndExpression LogicalOrExpression || LogicalAndExpression LogicalAndExpression: EqualityExpression LogicalAndExpression && RelationalExpression EqualityExpression: RelationalExpression EqualityExpression EqualityOperator RelationalExpression EqualityOperator: == != RelationalExpression: AdditiveExpression RelationalExpression RelationalOperator AdditiveExpression RelationalOperator: = AdditiveExpression: MultiplicativeExpression AdditiveExpression AdditiveOperator MultiplicativeExpression AdditiveOperator: + – MultiplicativeExpression: UnaryExpression MultiplicativeExpression MultiplicativeOperator UnaryExpression MultiplicativeOperator: * / % UnaryExpression: PrimaryExpression UnaryOperator UnaryExpression UnaryOperator: […]

这个插值搜索实现有什么问题?

这是在Internet上找到的插值搜索算法的常见C / C ++实现。 但是,当与大约100000个整数的排序数组一起使用时,中间变量开始生成负数组索引,从而导致分段错误。 问题是什么? #include #include #include int interpolationSearch(int sortedArray[], int toFind, int len) { // Returns index of toFind in sortedArray, or -1 if not found int low = 0; int high = len – 1; int mid; while (sortedArray[low] = toFind) { mid = low + ((toFind – sortedArray[low]) * (high […]

python高效子字符串搜索

可能重复: 如何在CPython中实现string.find? 我在这里阅读了很多关于堆栈溢出的post比较子字符串搜索的性能(例如Python字符串搜索效率 , 这是搜索子字符串的最有效方法吗? , python中的子字符串等等) 我还看了一下包含abstract.c的源代码实现。 据我所知,内置实现是迭代的: python docs python是否有更多足够的技术来实现查找子字符串: Boyer-Moore算法 , Rabin-Karp算法等…… ??? 编辑 问题已经扩展: Python:通过嵌入复杂的算法改进子字符串搜索 。

如何找到哪个值最接近C中的数字?

我在C中有以下代码: #define CONST 1200 int a = 900; int b = 1050; int c = 1400; if (A_CLOSEST_TO_CONST) { // do something } 检查a,b和c中a是否与CONST最接近的值有什么方便的方法? 编辑: 如果我有3个变量或像这样的数组(它可能超过3个元素)并不重要: int values[3] = {900, 1050, 1400};