资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
算法作业 李同立 20114651、 多段图向前处理法:首先对书上5段图用邻接表建立,从文件中读入图建立,主要程序如下:void CreatGraph(Graph *G) /建立有向图fscanf(fp,%d %d,&G-vexnum,&G-arcnum); /从文件中读取顶点数和边数for(i=1;ivexnum;i+) fscanf(fp,%c,&G-verticesi.data); /从文件中读取顶点名称G-verticesi.firstarc=NULL; /将第一条邻接边的地址赋为空for(i=1;iadjvex,&p-weigh); p-nextarc=G-verticesj.firstarc; /使用插表头的方法插入邻接边G-verticesj.firstarc=p;首先对最后一个节点复制,然后从倒数第二个节点到第一个结点,分别求出其后面的所有的节点到终点的值加上本节点到下一个节点的距离,然后返回值最小的那个节点,即r.具体代码如下:void main() /向后处理法cost12=0;for(j=11;j=1;j-)p=G-verticesj.firstarc;min=p-weigh+costp-adjvex;costj=min;dj=p-adjvex;while (p-nextarc!=null)b=p-nextarc-weigh+costp-nextarc-adjvex;if(bnextarc-adjvex;p=p-nextarc;程序算法执行结果如下详细代码见附件FGRAPH.jar 2、 八皇后问题:首先是判断这个位置是否可以放置这个皇后,如果可以,则返回1,否则返回0.具体代码如下:int Place(int k)/判断能否放置一个新皇后int i=1;while(i0)xk+;while (xk=n)&(!Place(k)xk+;if(xk=n)if(k=n) for(i=1;i=n;i+)if(num%8=0) printf(第%-2d组解: ,num/8+1);printf(%d ,xi);num+;printf(n);else k+;xk=0;else k-;总共92组解:程序运行结果如下:代码详见附件8queens.jar
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号