摘要: 题目:给出编号为1,2,......,N的N(N<100)个点两两间的距离,求该图的最小生成树的边和。 思路:求最小生成树,用Kruskal算法。 知识点回顾:1.Kruskal算法:初始时所有点孤立,属于不同的点集。 把边按权值从小到大排序,然后遍历边。 若边的两点属于不同点集,则该边为最小生成树 阅读全文
posted @ 2017-05-04 11:09 松鼠大战干脆面 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目:输入编号为0,1,2,...,(N-1)的N个点间的M条有向边(2<=N,M<=100),判断是不是有向无环图。 知识回顾:1.有a条边指向某点,则该点的“入度”为a;从某点发出的边有b条,则该点的出度为b。2.拓扑排序:找出所有点的一种排序x1,x2,...,xi,...xj,...,xN, 阅读全文
posted @ 2017-04-16 21:21 松鼠大战干脆面 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题目: 给出点的个数N、边的个数M(N<=100,M<=10000),以及M条边(每条边有3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表A到B点的边权值为C)。求点1到点N的最短路径长。N=M=0表示输入结束。 Floyd算法: Dijkstra算法: ************* 阅读全文
posted @ 2017-04-03 16:17 松鼠大战干脆面 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 题目:给出城镇数目N ( < 1000 )和道路数目M;以及每条道路直接连通的两个城镇的编号(1到N编号)。输出最少还需要建设的道路数目,使任何两个城镇间都直接或间接连通。 思路:并查集。通过并查集判断真正起到链接作用,且不重复的路的数量,再求还需要建的路的数量。 代码: 阅读全文
posted @ 2017-03-31 17:57 松鼠大战干脆面 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题目:给定n,a(2<=n,a<=1000),求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。 思路: 过程:一开始,用直白解法(求n!,再循环除以a),问题出在n!可能会大到溢出。所以,转成用求质因数的方式来求k。 代码: 阅读全文
posted @ 2017-03-31 16:05 松鼠大战干脆面 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目:输入边的两端点和边值,求最小生成树(最小支撑树)的值。 思路: 过程:本题调试问题出在如下几处:1.用%c会读入回车符(用getchar()有的平台又会出问题),所以以后读字符都直接用%s,然后在取字符串第一个字符即可。char c[4];scanf("%s",c);printf("%c",c 阅读全文
posted @ 2017-03-31 09:53 松鼠大战干脆面 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题目:输入关于x的二次方程表达式(系数为整数),输出两个解(由小到大输出,保留两位小数);如果无解,则输出“No Solution”。 思路:先确定等号位置,分成左右两个字符串,从中分别提取系数,再综合。然后求解。提取系数的过程如图: 过程:介绍两个函数:atoi()函数可以识别"+""-"号,并正 阅读全文
posted @ 2017-03-30 11:50 松鼠大战干脆面 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一系列数字对x y,表示x是y的父结点。判断这是不是一棵树。输入0 0表示输出判断结果,-1 -1表示退出程序。 思路: 过程: 如果已经判断不是树,则接下来输入边后,直接continue,不要再处理。这样可提高运行速度。 这题坑得我不行不行的:虽然示例有显示换行,然而,不需要换行!!!! 阅读全文
posted @ 2017-03-29 20:22 松鼠大战干脆面 阅读(115) 评论(0) 推荐(0) 编辑