Tag: 算法

在C中替换字符串

写一个函数 void inplace(char *str, const char pattern, const char* replacement, size_t mlen) 输入: str :以\0结尾的字符串。 输入表明我们需要一个就地算法。 pattern :一封信。 replacement :一个字符串。 mlen :内存的大小保持字符串str从内存的开头开始,而mlen应该大于strlen(str) str的最终结果仍然是指出。 请注意,应替换所有出现的模式。 例如, helelo\0……….. 这里“helelo”是最后用’\0’替换的字符串。 ‘\0’之后仍然有L个有效字节。 我们想用“123”代替“e”。 一个简单的方法就是这样,我们通过str ,当一个模式匹配时,我们将所有其余的移动到地方以填充替换字符串,然后用替换替换模式。 如果原始字符串的长度为n且仅包含e ,则需要(n-1) + (n-2) + … + 1移位。 是否有一种算法只用一次通过和恒定的内存成本扫描字符串?

Dijkstra在C中的邻接矩阵

我需要在C中使用Dijkstra算法的一些帮助。 我已经生成了我的邻接矩阵,看起来像: int mat[NB][NB] = {{0, 171, MAX, 132, […]}, {171, 0, 30, 39, […]}, , […]}; 我发现了这个实现: http : //www.answers.com/topic/dijkstra-s-algorithm-1但路径是一维数组,我的矩阵是一个二维数组。 有没有办法将一个变换到另一个? 或者也许有人有办法处理这种矩阵。 在此先感谢您的帮助

C / C ++实现类似于子集和的算法

问题比knapsack (或其类型,没有值和只有正重量)更简单。 问题在于检查数字是否可以是其他数字的组合。 该函数应返回true或false 。 例如, 112和{ 17, 100, 101 }的列表应该返回false , 469具有相同的列表应该返回true , 35应该返回false , 119应该返回true ,等等… 编辑:子集和问题比背包更准确。

优化性能 – 在图形上实现自定义算法

对于我的大学任务,我需要提出一种算法,找到具有相同权重的最大边数的生成树。 可以在此处找到任务的描述: 查找具有相同权重的最大边数的生成树 。 在那里你还可以看到我用C语言实现的upvoted解决方案(由@mrip建议)。 我已在本地计算机上测试了代码,并在不同的数据集上提供了正确的输出。 但是,当我将解决方案上传到高程系统时,我发现程序完成时间比参考时间长3倍。 这是项目中的两个文件。 我当然添加了详细的评论: header.h //struct for subsets used in MST Kruskal algoritm typedef struct subset { int parent; int rank; } subset_t, *subset_p; //struct for storing graph edges typedef struct edges { int src; int dest; int weight; } edges_t, *edges_p; //struct for storing weights and number of their […]

Rand()基于C语言的算法是什么?

我一直在研究Rand()的源代码,但直到现在我还无法弄清楚函数的全貌。 以下是我发现和研究的源代码: rand.c random.c 有人可以为我提供一些建议或帮助吗? 太感谢了!

两个数字的LCM

我的LCM计划结果出错了。 如果找到数字的gcd,然后用gcd划分产品。 int gcd(int x, int y) { while(y != 0) { int save = y; y = x % y; x = save; } return y; } int lcm(int x, int y) { int prod = x * y; int Gcd = gcd(x,y); int lcm = prod / Gcd; return lcm; } 任何帮助非常感谢。

使用三个数字查找整数的总数组合

对于给定的整数n ,我需要打印长度为3的所有列表,它们总和为n 。 列表的成员必须是非负整数。 打印完所有这些列表后,必须打印找到的列表数。 例如,如果n = 2 : 1 + 0 + 1 = 2 1 + 1 + 0 = 2 0 + 1 + 1 = 2 2 + 0 + 0 = 2 0 + 0 + 2 = 2 0 + 2 + 0 = 2 这是我为长度为2的列表而不是长度为3的列表所做的程序: #include int main […]

如何在Python中使用子进程实现连续交互式对话?

也许连续互动不是正确的短语。 我想知道是否有人可以帮助我理解从Python程序调用程序作为子进程的基础知识? 我一直在乱砍,但我一直遇到令人沮丧的错误。 我最好用简单的例子。 我有一个名为square.py的程序保存到我的桌面,使用以下代码: i=0 while i<10: x=int(raw_input('Enter x-dimension: ')) x1 = x*x print str(x1) i=i+1 有人可以用简单的语言向我解释如何在IDLE中调用此程序并与它保持持续的交互式对话(保持打开并在后台运行),直到它自行终止? 最后,我需要利用这些知识从Python GUI(使用tkinter)调用用C编写的遗传算法程序。 遗传算法输出一组值,用户使用这些值做某事并向用户提供关于这些值的效用的反馈。 用户反馈的forms为0-100。 当遗传算法接收到输入时,它会发挥其魔力并输出另一个数字数组,这有望提供更好的效用。 因此,我想围绕一个可怕的C程序包装Python GUI,为C程序提供反馈值并接收一组数字。 我希望我解释了我想做的事情; 如果有人可以帮助我使用子进程调用square.py,传递一个值并返回其输出我会很高兴。 干杯!

Bignum除法与无符号8位整数。 C

我已经创建了一个算法,用于将整数最大为255字节的整数除以8位整数,并且它可以用于我已经完成的测试。 有没有人对此有任何意见或任何改进建议? 有没有更好的算法用于此目的? 我不希望bignum通过bignum除法算法,第二个整数是8位整数。 迄今为止的最佳解决方案(小端): typedef struct{ u_int8_t * data; u_int8_t length; }CBBigInt; void CBBigIntEqualsDivisionByUInt8(CBBigInt * a,u_int8_t b,u_int8_t * ans){ // base-256 long division. u_int16_t temp = 0; for (u_int8_t x = a->length-1;; x–) { temp <data[x]; ans[x] = temp / b; temp -= ans[x] * b; if (!x) break; } a->length -= ans[a->length-1]? 0 […]

给定一些单词,找到一个序列,使得seq的任何相邻单词不能具有相同的字符

给出一些词,例如香蕉,猫,狗,大象,类型,中间,湖 找到这样的序列 (1)每个单词都在序列上 (2)任何相邻的单词不能有相同的字符。 如果找不到seq,则返回false。 否则,返回true和seq。 没有重复。 没有单词的排列。 我的想法: 设置图形,并使用哈密顿路径查找seq。 但是,这是一个完整的NP。 如何避免汉密尔顿路径? 还有更好的想法? 谢谢