我保证没有抄袭他人的作业

发布 2022-09-15 01:11:28 阅读 6790

第一题:对无向图,其dfs周游(深度优先周游)的过程previsit(g, v)语句所涉及的结点按照相应的边访问顺序生成一个森林。请改写周游算法,把该生成树的结构和相应结点信息存储在树结点中返回。

题目中用的是模板,我想那应该是针对与treenode(树节点)中的节点值,而图中只有对图顶点标号的存储,是整型的,与template无法对应上去,因此我在图类中加了一个公有成员t * value数组,用value[i]存储标号i对应的值,把这个值赋给treenode(树节点)的值。

思路】:在深度周游图时,对一个顶点访问与它相关联的顶点时,第一个点是这个顶点的最左子,其它点是这个最左子的右兄弟。于是在访问某个点完毕后,检察它是否第一个访问的点,判断这个点是某个顶点的最左子还是之前访问点的右兄弟。

检查是否是第一个点的方法:纪录前一个被访问的点,初始是把前一个被访问点设为null,如果访问完一个点后,它的前一个访问点的指针是null,那这个点就是第一个访问点,一个顶点的最左子,若不是null则这个顶点是它前一个访问点的右兄弟。【**】:

/深度递归函数。

template < class t >

void dfs( graph &g, int v, treenode * point )/否则temppoint是tempprepoint的右兄弟else}}}

/建树函数。

template < class t >

treenode * graph_dfs(graph &g)else//否则point是prepoint的右兄弟}}returnroot;}

第二题dijstra算法是“求某点到所有点的最短距离”,请编写算法“求某点到所有点的次短距离”(第二最短路径)。

思路】:我对路径长度理解是。

1)若目标点到某点没有路径:最短路径为无穷大,次短路径为无穷大。

2)若目标点到某个点只有一个路径:最短路径就为那个路径,次短路径为无穷大。

可以知道图中一个顶点a的次短距离可能**于两个途径:

1):点a最短路径上的前一个点(pre)的次短路径长+pre点到点a的边的权值(2):除pre点之外其它指向点a的点的最短路径长+这个点到点a的边的权值。

我们可以比较这些值的大小,得到次短路径,因此要求得a次短路径,就要求得a的pre点的次短路径,和连向的a所有点的最短路径求最短路径可以采用书上dijkstra算法。

而要知道某点的pre点的次短路径,就要注意对每个点求次短路径的顺序,在做某个点的次短路径之前,要求这个点的pre点次短路径已经求好。dijkstra算法把点分成两组,第一组已经找到最短路径,第二组没有找到。研究dijkstra的算法可以发现,第一组中的某个点的最短路径上的点,一定是在这个点之前找到最短路径的点,因此可以按照找到最短路径的先后顺序,去找点的次短路径,在dijkstra算法执行过程中,记录各点找到最短路径的先后顺序,如此可以保证在做某个点的次短路径之前,这个点的pre点地次短路径一定已经求好。

为了可以判断两个点之间有没有边,和两个点之间边的权值:我在以相邻矩阵为存储结构的类中添加了两个公有函数:

第一个公有函数bool isrelated( int i, int j ),给出两个顶点标号,判断两个顶点是否相关联第二个公有函数int weight( int i, int j ),在两个顶点相关联的情况下,返回它们之间边的权值【**】

/图类采用数据结构与算法书中170到173页以相邻举矩阵为存储结构的图类。

/我在以相邻矩阵为存储结构的图类中添加了两个公有函数。

/第一个公有函数,给出两个顶点标号,判断两个顶点是否相关联bool isrelated( int i, int j )

/第二个公有函数,在两个顶点相关联的情况下,返回它们之间边的权值int weight( int i, int j )

class dist~dist(){dist & operator = const dist &arg )/重载=号bool operator ==const dist &arg )/重载==号bool operator > const dist &arg )/重载》号bool operator <=const dist &arg )/重载<=号bool operator >=const dist &arg )/重载》=号};

/s为目标点,g为图。

void mydijstra( graph & g, int s, dist * d )int current = 0;//记录mymin数组的长度d[s].min = 0;

minheaph(

/第一步:算出由s到所有点的最短路径//采用书上的dijkstra算法,略作改动。

/首先找s到所有点的最短路径,同时找到所有点中哪些是先找到最短路径的,哪些是后找到最短路径的//按照找到最短路径的先后次序,把顶点的标号存在int mymin数组中for( i = 0; i < i++

if(!found)//用found来处理堆空了,但没有找到未被访问过点的情况break;intv= e =

/我在图类中添加bool isrelated(int i, int j)函数,判断两个点之间是否有边if( j !=d[i].pre &&isrelated(j,i) )

d[j].min!=infinty){

20120327“抄袭”作业的问题

认识和解决学生中 抄袭 作业的问题。韩玲花 2012 03 27 学生抄袭作业的现象,已经很普遍。抄袭作业最明显 最直接的后果,是该科成绩不断下降,从而与同学间的差距加大。长此以往,会跟不上班,最后丧失学习的兴趣而放弃学习。为在教学中制止或者减少学生抄袭作业现象,促使学生独立完成作业,提高学生学习效...

抄袭作业的检讨书

抄袭作业的检讨书范文。尊敬的 您好,我是四年级 3 班的王鹏,前几天我在课间写 布置下来的家庭作业,因为一时觉得写不出来。又为了能够尽快完全作业,轻轻松松回家。我就借了同学的一本数学题练习本抄袭答案,结果被老师发现了。就将我的作业本没收了,老师当面批评了我,并要求我写这篇检讨书。事后我仔细想过了老师...

我的未来不要被保证

家长总是那样自以为是,或许我们不了解他们,但是当我们真正了解他们理解他们的时候,可能为时已晚,为什么,不在现在开明一些呢。快考试了,我的性格就是无忧无虑,遇到什么事情也不会影响我,往往考试不复习,也会超常发挥,所以,和往常一样,回到家,有限的打开电脑。在开机声响起的那一刻,随之而来的是妈妈的指责声 ...