Prufer代码唯一地标识一棵树,该树由用户作为图形表示形式给出,并带有从1到p的标签。该树包含节点的p(值由用户给定)标签。它具有p – 2个值的序列。
Begin Declare i, j, ver, edg, minimum, p to the integer datatype. Print “Enter the number of vertexes: ”. Enter the value of ver. Initialize edg = ver-1. Declare EDG[edg][2], DG[ver+1] to the integer datatype. Initialize DG[ver+1] = {0}. Print “This tree has (value of edg) edges for (value of ver) vertexes”. Print “There are (value of edg) pairs of vertexes in the tree”. for(i = 0; i < edg; i++) Print "Enter the value of vertex pair for edge ". Print "Enter the value of V(1) vertex: ". Enter the value of EDG[i][0]. Print "Enter the value of V(2) vertex: ". Enter the value of EDG[i][1]. DG[EDG[i][0]]++. DG[EDG[i][1]]++. Print "The Prufer code for the tree is: { ". for(i = 0; i < ver-2; i++) minimum = 10000 for(j = 0; j < edg; j++) if(DG[EDG[j][0]] == 1) then if(minimum > EDG[j][0]) then minimum = EDG[j][0]. p = j. if(DG[EDG[j][1]] == 1) then if(minimum > EDG[j][1]) then minimum = EDG[j][1]. p = j. DG[EDG[p][0]]--. DG[EDG[p][1]]--. if(DG[EDG[p][0]] == 0) then Print the value of EDG[p][1]. else Print the value of EDG[p][0]. Print "}". End.
#include<iostream> using namespace std; int main() { int i, j, ver, edg, minimum, p; cout<<"Enter the number of vertexes: "; cin>>ver; cout<<endl; edg = ver-1; int EDG[edg][2], DG[ver+1] = {0}; cout<<"This tree has "<<edg<<" edges for "<<ver<<"vertexes.\n"; cout<<"There are "<<edg<<" pairs of vertexes in the three.\n"; for(i = 0; i < edg; i++) { cout<<"Enter the value of vertex pair for edge "<<i+1<<":\n"; cout<<"Enter the value of V(1) vertex: "; cin>>EDG[i][0]; cout<<"Enter the value of V(2) vertex: "; cin>>EDG[i][1]; DG[EDG[i][0]]++; DG[EDG[i][1]]++; } cout<<"\nThe Prufer code for the tree is: { "; // Print the prufer code of the given tree. for(i = 0; i < ver-2; i++) { minimum = 10000; for(j = 0; j < edg; j++) { if(DG[EDG[j][0]] == 1) { if(minimum > EDG[j][0]) { minimum = EDG[j][0]; p = j; } } if(DG[EDG[j][1]] == 1) { if(minimum > EDG[j][1]) { minimum = EDG[j][1]; p = j; } } } DG[EDG[p][0]]--; // Remove the selected vertex by decreasing its degree to 0. DG[EDG[p][1]]--; // Decrement the degree of other vertex, since we have removed the EDG. if(DG[EDG[p][0]] == 0) cout<<EDG[p][1]<<" "; else cout<<EDG[p][0]<<" "; } cout<<"}"; return 0; }
输出结果
Enter the number of vertexes: 5 This tree has 4 edges for 5vertexes. There are 4 pairs of vertexes in the three. Enter the value of vertex pair for edge 1: Enter the value of V(1) vertex: 2 Enter the value of V(2) vertex: 3 Enter the value of vertex pair for edge 2: Enter the value of V(1) vertex: 5 Enter the value of V(2) vertex: 6 Enter the value of vertex pair for edge 3: Enter the value of V(1) vertex: 7 Enter the value of V(2) vertex: 8 Enter the value of vertex pair for edge 4: Enter the value of V(1) vertex: 9 Enter the value of V(2) vertex: 10 The Prufer code for the tree is: { 4 8 4 }
本文向大家介绍C#程序创建线程池,包括了C#程序创建线程池的使用技巧和注意事项,需要的朋友参考一下 对于线程池,创建两个以上的函数并排队执行方法。 首先,创建类似的方法- 以相同的方式,创建更多方法,然后使用 ThreadPool.QueueUserWorkItem将方法排队以执行- 示例 您可以尝试运行以下C#代码来创建线程池。 输出结果
假设你有一个C程序,它必须从给定的文本中读取。txt文件。该计划将: 计算文件中每个字符的出现次数,然后每个唯一字符(及其频率)将存储为一个新的树节点 然后,程序构建包含这些节点的最小堆,然后使用该最小堆构建哈夫曼代码树 遍历(pre order和in order)将写入输出文件。树的每个内部节点都有标签I:xxx,其中xxx是int标签,叶子有L:xxx 该程序最后构造一个表,其中包含存储为字符
问题内容: 是否可以将Python程序转换为C / C ++? 我需要实现一些算法,而且我不确定性能差距是否足够大,足以证明我在C / C 中做的所有痛苦(我不擅长)。我考虑过要编写一种简单的算法,并针对这种转换后的解决方案进行基准测试。如果仅此一项比Python版本要快得多,那么除了在C / C 中做到这一点,我别无选择。 问题答案: 是。看看赛顿。它就是这样做的:将Python转换为C以加快速
Prufer 序列可以将一个带标号 n 个结点的树用[1,n]中的 n-2 个整数表示。你也可以把它理解为完全图的生成树与数列之间的双射。 显然你不会想不开拿这玩意儿去维护树结构。这玩意儿常用组合计数问题上。 Heinz Prufer 于1918年发明这个序列来证明凯莱定理。 1. Prufer是什么? 把一个无根树变成一个序列,也可以把一个序列变成一个序列 2. 性质 (1)prufer序列与无
本文向大家介绍C#程序创建一个简单线程,包括了C#程序创建一个简单线程的使用技巧和注意事项,需要的朋友参考一下 为了创建线程,我创建了一个函数- 调用上述函数以创建线程,并创建一个新的ThreadStart委托- 示例 使用以下代码创建一个简单的线程。 输出结果
我有一个自定义模板类- 我想要一个常量迭代器开始于myClass,常量迭代器结束于myClass,它能够迭代myClass矩阵中的对象T,我正在努力创建这样的东西。 在我看来,我想把矩阵上的所有对象T聚集到某个局部一维向量,然后返回迭代器。从这个向量或迭代器开始。结束这个向量 此外,我希望能够支持for-each循环如下: 谢谢!