![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础
文章平均质量分 69
用编程写诗
一个在读计算机科学与技术专业的大学生。
int live=1;
while (live)
printf("用诗点亮每一天\n");
展开
-
算法基础——求每对结点之间的最短路径
首先就是我们需要把图的邻接矩阵cost赋值到A这个矩阵里面随后我们最关键的是那个求min的部分。我们是进行了三次循环下面两次循环好理解一点因为这个是矩阵也就是二维数组所以下面肯定是会有两个循环的。最上面k那个循环其实想表达的意思是因为图中肯定会存在有部分点是需要通过中间结点来到达目的结点的所以K也就是表达的是中间结点。这个问题是很简单的我们之前有一个算法是贪心法求解最短路径问题也就是迪杰斯特拉算法。其实这个代码可以写的更简洁一些,但是为了跟上面的算法趋近于一致所以写的看起来复杂了许多。原创 2022-11-12 16:36:49 · 892 阅读 · 0 评论 -
算法基础——二分检索
如果要寻找的数字比数组中间的数字大那么我们在这个数组的后半部分去查找,如果要寻找的数字比数组中间的数组小那么我们应该在这个数组的前半部分去查找。我们在这里可以看到主要是通过low和high还有mid来控制查询的,low和high是随着程序的运行而逐步发生改变的。//给定一个按非降次序排列的元素数组A(1:n),n≥1,判断x是否出现。若是,则置j,使得x=A(j),若非,j=0//pd(n,low,high);这个算法是很简单的是很容易理解的,但是局限性是很明显的它必须要求是有序的数组这个限制就很大了。原创 2022-11-04 22:31:40 · 683 阅读 · 0 评论 -
子集和数问题
这里我在主函数中定义了两个数组,一个是存放集合中的数组元素的w[7] 一个是与数组元素长度一样的数组x[7]是用来存放数组元素相对应的位置是否存放了如果存放了就设置为1否则设置为0这里设为bool变量的会更好一点。在这个函数当中我们需要传进去参量分别为 现在的和 现在找到的位置 剩余元素的和 w这个数组 x这个数组。有两个函数一个是用来输出的函数printresult输出结果的函数目的是判断x[7]这个数组为1的位置来输出w[7]相对应的数这样就可以把我们所得到的这个集合输出出来。原创 2022-11-01 19:08:22 · 1049 阅读 · 0 评论 -
N皇后问题
然后我们进行判断当我们放置的数量已经超过N的时候就退出,当我们搜索完所有的列的时候我们就退回到第一列并且行数加一也就是搜索完本行所有列后就去下一行的第一列开始搜索。皇后问题:在一个由N2个方块排成N行N列的正方形,称为N元棋盘,在N元棋盘上放置N个皇后,如果某两个皇后位于N元棋盘的同一行或同一列或同一斜线(斜率为±1)上,则称它们在互相攻击,试设计算法找出使N个皇后互不攻击的所有布局。//行,列,对角线,反对角线。原创 2022-10-31 10:56:11 · 326 阅读 · 0 评论 -
贪心法解决背包问题
在这里面就是如果背包的剩余容量是大于物品的重量的那么这个物品是可以放下的这个的解向量就是1继续进行这个循环,但如果背包的剩余容量是小于物品的重量那么就跳出这个循环将解向量设为剩余重量除以这个物品重量。给定n个物品和一个容量为M的背包,物品i的重量是wi,其效益值是pi ,xi为装入系数,背包问题就是如何选择装入背包的物品,使得装入背包中物品的总的效益值(Σpixi)最大。考虑下列情况下的背包问题:n=3,M=20,(p1,p2,p3)=(25,24,15),(w1,w2,w3)=(18,15,10)原创 2022-09-28 18:59:54 · 5829 阅读 · 0 评论