摘要: 最近,又看起来操作系统,对其中的一些概念还不是理解的很透彻,现在再来温习一遍。 访管指令。引用百度百科的一些理解: 当源程序中有需要操作系统服务的要求时,编译程序就会在由源程序转换成的目标程序中安排一条“访管指令”并设置一些参数。当目标程序执行时,中央处理器若取到了“访管指令”就产生一个中断事件,中断装置就会把中央处理器转换成管态,并让操作系统处理该中断事件。操作系统分析访管指令中的参数,然后让相应的“系统调用”子程序为用户服务。其次,访管指令是在目态下使用的指令。 我们知道,用户程序只能在目态下运行,并且不能使用特权指令。因而就存在这么一个问题:如果用户程序想要启动外设,或者要完成在目态下. 阅读全文
posted @ 2012-11-24 22:34 简单地快乐 阅读(6430) 评论(0) 推荐(0) 编辑
摘要: 这个题让我做得有些纠结。将我的做题过程思路写出来。 这是一道深度优先搜索的题目,目的是来求出无线连通图的割点。首先,要明白什么是割点,割点:在一个连通图中,如果去掉了某个点和所有与这个点相连的边后,是图分成了两个部分,变成了一个不连通的图。那么这个点就是割点。还有,就是如何来求割点? 搜索深度:如果节点k的搜索深度为j,则节点k为第j个搜索到的节点。 若有k的儿子为i,我们定义AnceDeep[i]为与结点i相连接的所有节点最小的搜索深度,deep[k]为k的搜索深度(时间戳),那么k为割点当且仅当k满足(1)(2)中的一个: (1) 若k为深搜树的根Root,当且仅当k的儿子数(分支数... 阅读全文
posted @ 2012-11-18 21:57 简单地快乐 阅读(316) 评论(0) 推荐(1) 编辑
摘要: 这是一道bfs的习题,比较经典,以前也没做过bfs的题,第一次做,记录下思路。 首先,应该弄明白的是BFS要通过队列来实现,我向来不喜欢做题时自己再将什么声明队列,出队列,入队列的函数给写出来,感觉有点麻烦。这次我才发现有queue、stack的这种头文件,可以直接使用。第一步将起点位置加入队列,如果当队列为空还没有访问到目标位置就代表访问不到目标位置了。 其次,这道题求的是最少的步数,一旦搜索到目标位置,就立马停止搜索,输出步数。那么这个步数怎么来算呢??如何避免访问已经访问过的位置呢??这里建立一个二维数组,存放每一个位置的状态,-1表示没有访问过,其他的值代表访问这个位置的时候已经走过. 阅读全文
posted @ 2012-11-18 14:07 简单地快乐 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 这道题也是一道最短路径的题目。用的是Floyd算法。下面简述一下自己做这道题的过程。 首先,要对Floyd算法理解清楚。Floyd算法可以求出的是任意两点之间的最短路径,注意这里是任意,所以可用一个邻接矩阵来表示各点到各点的最短路径。它的基本思想是在Vi到Vj的所有路径中找出一条长度最小的。那么如何有效的找出这一条最短的呢??<Vi,Vj>代表从Vi直接到Vj,那么<Vi,Vj>要么是一条弧的值,要么是一个无穷大的值(即这两点之间没有直接连接的弧)。我们依次在<Vi,Vj>之间插入V1到Vn,首先从V1开始,那么从Vi到Vj的最短路径可能要经过V1,所以此时 阅读全文
posted @ 2012-11-17 23:08 简单地快乐 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 做这道题的时候,自己恰好刚看过dijstra算法。不过感觉有些地方还是不是那么好处理?去网上看了一下,大家好像说这个题很简单,就感觉自己太菜了。下面写下自己做这个题的过程。 首先,我要解决的是要存储消防站到火点的路径,并且是存储多个消防站到火点的路径,这个该怎么存储呢?此外,我要存储多个消防站到火点所用的时间,这个该怎么存储呢?还有,怎么根据输入消防站的个数不同来输出呢?这些都成为了我的困扰。 后来看了网上的代码,感觉对我帮助很大。 一、我用不用存储每个消防站到火点的路线呢?不用!!我只要将到达该点的最短路径的前驱存储就行了,用不着再用什么二维数组来存储消防站到火点的距离。举个例子,消防站标. 阅读全文
posted @ 2012-11-17 15:48 简单地快乐 阅读(252) 评论(0) 推荐(0) 编辑