摘要:
动态规划的基本思想:将一个问题分解为子问题递归求解,且将中间结果保存以避免重复计算。通常用来求最优解,且最优解的局部也是最优的。求解过程产生多个决策序列,下一步总是依赖上一步的结果,自底向上的求解。动态规划算法可分解成从先到后的4个步骤:1. 描述一个最优解的结构,寻找子问题,对问题进行划分。2. ... 阅读全文
摘要:
欧几里德算法欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数的传统算法。其计算原理依赖于下面的定理:定理:gcd(a,b) = gcd(b,a mod b) (a>b 且a mod b 不为0)证明:a可以表示成a = kb + r,则r = a mod b假设d是a,b的一个公约数... 阅读全文
摘要:
判断n是否为素数1、最简单的方法:用n除以2~sqrt(n),有一个能除尽就不是素数,否则是素数。时间复杂度:O(sqrt(n))为什么是sqrt(n),n的开方呢? 假设n是个合数,它必然可以由两个数a,b相乘而得到,即a*b = n。在这两个数中,如果a>sqrt(n), 则bsqrt(n), ... 阅读全文
摘要:
【问题描述】给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。例如,给定三个连乘矩阵{A1,A2,A3}的维数分别是10*100,100*5和5*50,采用(A1A2)A3,乘法次数... 阅读全文
摘要:
怎样判断一个图是否为二分图?无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。如果需要分出哪些顶点是一组,很简单,用染色法,即从其中一个顶点开始,将跟它邻接的点染成与其不同的颜色,如果邻接的点有相同颜色的,则说明不是二分图,用 bfs 或 dfs 遍历即可。#inclu... 阅读全文
摘要:
dijkstra算法与prim算法的区别1.先说说prim算法的思想:众所周知,prim算法是一个最小生成树算法,它运用的是贪心原理(在这里不再证明),设置两个点集合,一个集合为要求的生成树的点集合A,另一个集合为未加入生成树的点B,它的具体实现过程是:第1步:所有的点都在集合B中,A集合为空。第2... 阅读全文
摘要:
边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树。 构造网的最小生成树必须解决下面... 阅读全文
摘要:
如何在android中调用数据库资源在android中主要有两种方法来实现对数据库的访问,一种是adb shell方式,另一种是通过相关的android 的java类来间接的对数据库来进行操作。其中前者主要用于在开发过程中进行调试等工作,后者则为android中主要的使用数据库的方式。下面就对这两种方式进行一个简要的介绍。1.adb shell方式说白了,adb shell 就是一个android模拟器的后台资源调用器(个人理解啦~~)。它的操作方式和命令提示符差不多——以命令行的方式进行。既然是模拟器的后台资源调用器,那当然得先打开android模拟器了。打开模拟器后,再打开命令提示符,在里 阅读全文
摘要:
#设置环境变量名称:ANDROID_SDK_HOME值:我的为-->E:\android\android-sdk#代码编译及运行1.把下面的代码保存为:AndroidDocRepair.java2.javac AndroidDocRepair.java3.java AndroidDocRepairimport java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileFilter; import java.io.FileNotFoundException;. 阅读全文
摘要:
二分图指的是这样一种图,其所有顶点可以分成两个集合X和Y,其中X或Y中任意两个在同一集合中的点都不相连,所有的边关联在两个顶点中,恰好一个属于集合X,另一个属于集合Y。给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。图中包含边数最多的匹配称... 阅读全文