数据结构与算法
cheng.li@3D_Vision
B站讲解摄影测量和三维重建
欢迎交流摄影测量与slam!
B站:橙子的RGB空间
展开
-
顺时针打印矩阵并输出
import cProfiledef printMatrix(matrix): result=[] while matrix: result.append(matrix.pop(0)) if not matrix or not matrix[0]: break else: matrix...原创 2018-10-19 18:35:10 · 450 阅读 · 0 评论 -
最大子序列问题---Kadane’s Algorithm(Dynamic programming(二))
Kadane’s Algorithm:初始化: max_so_far = 0 max_ending_here = 0遍历arr中每一个元素 (a) max_ending_here = max_ending_here + a[i] (b) if(max_ending_here < 0) max_ending_here = 0 (c) i...原创 2019-02-07 23:00:39 · 280 阅读 · 0 评论 -
最小平方个数(Dynamic programming(一))
最小平方和等于给定n的平方数思路很简单,我们从1开始,一直到一个平方小于或等于n的数,对于每一个x, n-x都会循环。递归写法公式min(res,1+getMinSquare(n-temp)),temp=x*x;int getMinsquare(int n){ if(n<=3) { return n; } int res=n; ...原创 2019-02-03 22:42:02 · 893 阅读 · 0 评论 -
子序列问题和组合数问题
input arr={10, 7, 5, 18, 12, 20, 15}sum =35output:输出所有等于sum的子序列{10, 7, 18}{10, 5, 20}{5, 18, 12}{20, 15} algorithm subsetSum(arr,subarr,n,subSize,total,node,sum) n是arr的大小,subSize是subar...原创 2019-01-09 14:59:38 · 261 阅读 · 0 评论 -
子序列Subset Sum Problem(二)
给定一个数组和子数组长度,打印该数组中所有等于长度的组合子序列如图:输入值:{1,2,3,4,5}输出值:见根节点#include <iostream>#include<vector>#include<algorithm>using namespace std;void combinationUtil(int arr[],int data[],i...原创 2019-01-10 19:45:58 · 412 阅读 · 0 评论 -
最短路径代价MCP算法(做了小改动,不仅能输出最小权值,而且能输出路径)
要学习别人的算法和思考如何修改算法–牢记!一、关于MCP算法如上图,给定一个矩阵,和一个位置(m,n)怎么找到其到(0,0)的最短路径代价,可以看出 (0, 0) –> (0, 1) –> (1, 2) –> (2, 2)。这个时候路径的最短代价 8 (1 + 2 + 2 + 3)。那么编程如何实现?借用下面公式:minCost(m, n) = min (minCost(m...原创 2018-12-16 16:49:35 · 1733 阅读 · 0 评论 -
Dynamic Programming(will be upgrading always)
1、回朔解决迷宫问题r,c=4,4def isSafe(maze,x,y): if x&amp;gt;=0 and x&amp;lt;c and y&amp;gt;=0 and y&amp;lt;r and maze[y][x]==1: return True return False def solvemaze(maze,x,y,sol): if x==c-1 and y==r-1.原创 2018-12-20 11:08:48 · 209 阅读 · 0 评论 -
c++ 牛顿迭代法求根源码(c++函数有多个不同类型返回值的处理方法)
#include &lt;iostream&gt;#include&lt;cmath&gt;using namespace std;struct result{ double x; int iter;};double f(double x) //原函数{ return pow(x,4) - 6.4*pow(x,3) + 6.45*pow(x,2) + 20....原创 2018-11-11 14:54:33 · 1088 阅读 · 0 评论 -
高斯消元python源码介绍
原理:Ax=b, A:nn, x:n1,b:n1Aij:Aij-lamdaAkj,j=k,k+1,…n,其中k 是约化次数,如n行的矩阵需要约化n-1次bi:bi-lamda*bk,其中lamda=Aik/Akk,Akk是主对角线元素,Aij 是被约化元素约化后的进行回代就可解算出x代码如下:import numpy as npa=[[1,2,3],[2,3,4],[7,5,6]]...原创 2018-11-03 16:15:41 · 472 阅读 · 1 评论 -
子序列问题(最长连续子序列和最长递增子序列--Dynamic programming(三))
最长连续子序列个数1)创建一个空的哈希表2)插入元素到哈希表3)遍历每个元素检查元素是否子序列的起点。为了检查,我们可以简单在哈希表寻找arr[i]-1,如果找到,则arr[i]则是子序列的起点,否则步进。计数连续的元素并更新countInput: arr[] = {1, 9, 3, 10, 4, 20, 2};Output: 41, 3, 4, 2 是最长的连续子序列(连续的次序...原创 2019-02-09 23:34:46 · 260 阅读 · 0 评论