Tag: 搜索

搜索字符矩阵中的特定单词

我试图通过C搜索字符矩阵中的特定单词,但无法找到固定的解决方案。 例如:假设我必须在字符矩阵中搜索单词INTELLIGENT (3 * 9)(一旦你从矩阵中选择一个字符形成一个句子,你就不能再选择它来形成同一个句子。有从任何小区到其所有相邻小区的路径。邻居可以共享边缘或角落。) IIIINN.LI …. TTEGL ….. NELI 输出:是(可以找到智能这个词)任何人都可以解决上述问题!!!!

什么是可以在非排序数组上完成的最快搜索?

如何在非排序数组中快速搜索? 除了线性搜索之外,我无法想到任何其他搜索机制。 任何指针都会有所帮助。

使用c检测文件上的重复行

我有一个大约(15000-25000)行(固定大小)的csv文件,我想知道如何使用c语言检测重复的行。 输出的一个例子是这样的: 0123456789;CUST098WZAX;35 我没有记忆或时间限制,所以我想要最简单的解决方案。 谢谢你的帮助。

在字符串中查找子字符串的计数

我必须使用C语言在字符串中找到子字符串的计数。 我正在使用函数strstr但它只找到第一次出现。 我对算法的想法就像在字符串中搜索而strstr不返回null并在每个循环中对主字符串进行子串。 我的问题是如何做到这一点?

好的C字符串库

我最近受到启发,启动了一个我想要编写一段时间的项目。 我想在C中做,因为内存处理是这个应用程序的关键。 我正在四处寻找C中字符串的良好实现,因为我知道我自己这样做会导致一些混乱的缓冲区溢出,我希望处理相当多的字符串。 我发现这篇文章详细介绍了每一个,但他们每个人都觉得他们有很多利弊(不要误会我的意思,这篇文章非常有帮助,但它仍然让我担心,即使我是选择其中之一,我不会使用我能得到的最好的)。 我也不知道这篇文章是如何更新的,因此我目前的请求。 我正在寻找的是可以容纳大量字符的东西,并简化了搜索字符串的过程。 如果它允许我以任何方式标记字符串,甚至更好。 此外,它应该有一些非常好的I / O性能。 打印和格式化打印不是最重要的。 我知道我不应该期望一个库能为我做所有的工作,但如果有一个记录良好的字符串函数可以节省我一些时间和一些工作,只是徘徊。 任何帮助是极大的赞赏。 提前致谢! 编辑:我被问及我喜欢的许可证。 任何类型的开源许可都可以,但最好是GPL(v2或v3)。 EDIt2:我找到了betterString(bstring)库,它看起来很不错。 良好的文档,小而多function的function,并且易于与c字符串混合。 有没有关于它的好故事? 我读到的唯一缺点是它缺乏Unicode(再次,读到这个,还没有看到它面对面),但其他一切似乎都很好。 EDIT3:另外,最好是纯C.

在C中进行三元搜索

我想在C中对三进制进行三元搜索…我已经尝试过了……但是对于特定情况它并不适用。 请帮我删除以下程序中的错误 – 我的尝试: #include #include void tsearch(int *a,int i,int j,int k); main() { int a[30],n,i,k; printf(“\nEnter n:”); scanf(“%d”,&n); printf(“\nEnter nos in ascending order:”); for(i=0;i<n;i++) scanf("%d",&a[i]); printf("Enter no to search:"); scanf("%d",&k); tsearch(a,0,n-1,k); getch(); } void tsearch(int *a,int i,int j,int k) { int m1,m2; m1=(i+j)/3; m2=2*(i+j)/3; if(k==a[m1]) { printf("\nno found at %d",m1); return; } else if(k==a[m2]) […]

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

这是在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 […]

如何从hsearch中删除元素

我正在使用GNU C库提供的hsearch_r函数。 我看到虽然我可以使用hsearch_r将元素添加到HASH表中并将操作作为ENTER传递,但我看不到从HASH表中删除元素或条目。 有人知道为什么会这样吗? 我可以执行以下操作来实现删除function。 我首先使用hsearch_r搜索它,其操作为FIND。 然后,一旦我得到一个指向hash_element的指针,然后我释放它。 那会有用吗? 如果我只能添加元素并搜索它们,那么哈希库有什么用处。 为什么不提供删除例程? 我试着用谷歌搜索hsearch库的源代码而无法找到它。 有人也能指出我的意思吗? http://linux.die.net/man/3/hcreate_r 编辑: 我也看到,如果我用动作ADD调用hsearch_r两次,那么它既不会抛出错误,也不会使用新值更新散列。 这很奇怪。 这意味着内部hsearch不实现替换function,我们必须自己完成,即首先进行搜索,然后如果存在,则删除第一个条目,然后添加一个新条目。 但是要做到这一点,我们需要从哈希中删除一个元素,我无法做到。

你有多快能进行线性搜索?

我正在寻找优化这种线性搜索: static int linear (const int *arr, int n, int key) { int i = 0; while (i = key) break; ++i; } return i; } 数组已排序,函数应返回大于或等于键的第一个元素的索引。 它们的数组不大(低于200个元素),并且会为大量搜索准备一次。 如果需要,可以在第n个之后将数组元素初始化为适当的数组,如果这样可以加快搜索速度。 不,不允许二进制搜索,只允许线性搜索。 编辑 :我在博客文章中总结了有关此主题的所有知识。

在文本文件C中搜索字符串

以下代码一次读取一个字符的文本文件并将其打印到stdout: #include int main() { char file_to_open[] = “text_file.txt”, ch; FILE *file_ptr; if((file_ptr = fopen(file_to_open, “r”)) != NULL) { while((ch = fgetc(file_ptr)) != EOF) { putchar(ch); } } else { printf(“Could not open %s\n”, file_to_open); return 1; } return(0); } 但是不是打印到stdout [putchar(ch)]而是我想在文件中搜索另一个文本文件中提供的特定字符串,即。 strings.txt并输出匹配到out.txt的行 text_file.txt : 1993年 – 1999年奔腾 1997年 – 1999年Pentium II 1999年 – 2003年奔腾III […]