![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
crazy-joker
好吧,我还是小菜鸡啦
展开
-
将一个数组拆分成k段,对每个段求和,如何使和最小的段取到最大值
总的解题思路:既然要将数组arr分成k段,那么后面段的拆分,依赖于前一段的拆分。假设第一段已经拆分好了,那么后续的段就可以在此基础上进行拆分。整个数组拆分成k段有若干种情况,针对每一种情况,我们可以求出第n次拆分中最小段的和,同时与迄今为止保留的最小段的和最大的那个进行比较,保留较大的一方,直到遍历所有的拆分方案。拆分并不是无穷无尽的,比如第一段的start和end下标,就一定要满足end <= arr.length-k+1,否则数组后续的元素个数,都不够剩余的k-1段分配。public cla原创 2021-05-19 10:12:54 · 2976 阅读 · 0 评论 -
基于邻接表的dijkstra算法——C语言实现
鉴于CSDN上实现dijkstra算法大多是使用邻接矩阵,因此记录一下使用邻接表的实现。该算法通过读入文件构造邻接表,然后使用dijkstra构造单源最短路径。代码如下:dijkstra.h#define MAXSIZE 210//定义无向图中的顶点//定义无向图中的边(弧)typedef struct Edge{ int node;//该边的终点 int cost;//经过这条边需要的代价 struct Edge* nextedge;//与该顶点相连的下一条边}Edge;typ原创 2021-01-04 20:54:31 · 2086 阅读 · 4 评论