在这篇文章中,我们将讨论一个执行有限自动机算法进行模式搜索的程序。我们得到一个文本[0...n-1]和一个模式[0...m-1]。我们必须找到模式[]在文本[]中所有出现的位置。为此,我们将预处理文本[]并构建一个二维数组来表示它。之后,我们只需要遍历文本[]的元素和自动机的不同状态即可。示例 在线演示#include #include #define total_chars 256 int calc_nextstate(char *pat, int M, int state, int x) { if (state < M && x == pat[state]) ... 阅读更多
在这篇文章中,我们将讨论一个程序,用于查找元素小于或等于 N 并遵循某些特定条件的唯一数字对:两个数字之间差的平方必须等于这两个数字的最小公倍数。这两个数字的最大公约数可以表示为任意两个连续数字的乘积。解决这个问题的最佳方法是从 1 开始取两个连续数字,并找到这些数字乘积的倍数。然后,为了指定一对数字,我们需要……阅读更多
在这篇文章中,我们将讨论一个程序,用于查找两个给定的未排序数组的并集和交集。让我们用 'A' 和 'B' 表示这两个数组。那么这两个数组的并集用 A ∪ B 表示,它基本上是这两个给定数组中所有元素的数组;前提是每个元素只重复一次。为了找到这个,我们将创建一个单独的数组并将第一个数组中的所有元素复制到其中。然后,我们将遍历第二个数组的元素,并检查它是否已存在于并集……阅读更多
在这篇文章中,我们将讨论一个程序,用于在比较两个不同的给定字符串时找出不常见的字符。众所周知,字符串只不过是字符数组。因此,为了进行比较,我们将遍历一个字符串的字符,并同时检查该元素是否存在于另一个字符串中。如果我们令第一个字符串为 A,第二个字符串为 B。那么它将给我们 A - B。类似地,我们可以计算 B - A。结合这两个结果,我们将得到 (A - B) ∪ (B - A),即……阅读更多