算法
冯巩2.0
这个作者很懒,什么都没留下…
展开
-
回溯算法解决智能拼图的最小步骤的问题
文章目录题目描述分析代码的完整实现题目描述要求输入一个拼图的初始状态,返回拼图的成功所经过的最小的步数,例如:初始状态:1 2 34 5 67 0 8成功的状态1 2 34 5 67 8 0输出步数 : 10号可以与相邻的数字进行交换,要求最后的状态0号位于右下方,其余位置按上面的顺序排列分析这和我们常见的迷宫求解的题目有些差别,迷宫求解的过程中可以标记走过的路,以...原创 2019-04-05 01:33:03 · 2486 阅读 · 0 评论 -
求网络中两点之间的路径
文章目录一、标题:二、题目代码实现一、标题:求网络中两点之间的路径二、题目在一个网络拓扑中(可以支持数千个点的规模),边是双向的,两点之间最多有一条边,所有边的距离相等(也就是权重为1),给出源和目的两个点,需要找出满足条件的路径。1。找出源和目的之间的一条主用路径。2。找出源和目的之间的一条备用路径。备用路径和主用路径至少有一个点或边不相同。关于备用路径可能满足下列约束:1)和主...原创 2019-04-17 12:56:42 · 2489 阅读 · 0 评论 -
一个模拟的负载均衡系统的实现
文章目录一、标题二、题目三、功能需求四、代码实现一、标题一个模拟的负载均衡系统的实现二、题目为了构建可伸缩的,高可用的网络服务,很多大型网站都采用了负载均衡技术。利用负载均衡技术,可以将多台廉价的、低性能的服务器,组合成一台性能强劲的,高可用的虚拟服务器。负载均衡的常见实现方式大致如下:将网络服务的地址(如公网IP地址、tcp套接字等)部署在负载均衡器上,而不是真实的服务器上;将负...原创 2019-04-17 12:51:08 · 1841 阅读 · 0 评论 -
动态规划解决贴纸拼字游戏
文章目录题目描述分析题目描述我们给出了 N 种不同类型的贴纸。每个贴纸上都有一个小写的英文单词。你希望从自己的贴纸集合中裁剪单个字母并重新排列它们,从而拼写出给定的目标字符串 target。如果你愿意的话,你可以不止一次地使用每一张贴纸,而且每一张贴纸的数量都是无限的。拼出目标 target 所需的最小贴纸数量是多少?如果任务不可能,则返回 -1分析首先定义f(i,j)表示得到目标字...原创 2019-04-16 17:09:56 · 1937 阅读 · 0 评论 -
A *算法
文章目录A* 算法Dijkstra 算法Greed-Best-First-Search算法启发函数A*算法的代码实现A* 算法A* 算法是求解最短路径的算法之一,其他的求解算法还有Dijkstra 算法、Bellman-ford 算法、SPFA 算法、Floyd算法等。既然有了上面的那么多的算法,为什么还要设计A* 算法呢?A* 算法较其他算法的不同就是它采用了启发式搜索的方式,一般算法采...原创 2019-04-02 23:32:40 · 1809 阅读 · 0 评论 -
多路归并与败者树的简单实现
在外部排序中常用到归并排序,外部排序要频繁地对文件进行读写操作,这样会影响程序运行的效率,所以在排序中要尽可能地减少对文件的读写大操作,所以的二路归并的基础上有了多路归并的概念,在多路归并中败者树可以使得归并的速度更快。当然归并排序的速度与很多因素有关,如:选择几路归并,内部排序的算法选择等。#include <iostream>#include <vector>#i...原创 2019-04-12 02:40:05 · 1703 阅读 · 0 评论 -
遗传算法应用实例
h原创 2019-03-30 17:22:58 · 26245 阅读 · 3 评论 -
算法与程序设计之递归程序设计
文章目录递归程序设计1、递归的定义2、何时使用递归3、递归的模型4、递归算法的执行过程递归设计解题过程结语递归程序设计1、递归的定义递归是指在函数定义中有吊影函数自身的方法,若函数p函数定义中又调用了函数p,这种递归称为直接递归,若p函数调用函数q, 函数q 有调用了 函数p,称之为间接递归。一般来说,能够用递归解决的问题应该满足三个条件1、需要解决的问题可以转换为一个或多个子问题来求解...原创 2019-03-30 18:23:31 · 2090 阅读 · 0 评论 -
算法与程序设计之分治法程序设计
文章目录分治法概述1、分治法的设计思想2、分治法的求解过程分治法实现的归并排序分治法概述1、分治法的设计思想对于一个规模为 n 的问题,当n的值很小时,问题可以被很容易的解决,则可以将这类问题进行分解,分解为 k 个较小的子问题,这些问题相互独立且与原问题的形式相同,递归地解决这些子问题,并将各个子问题的解合并得到原问题的解,这种算法程序设立叫分治法。分治法所能解决的问题一般包括一下几个特...原创 2019-03-30 19:09:15 · 3182 阅读 · 0 评论 -
cas 实现无锁栈和队列
文章目录什么是CAS?能做什么事情?CAS和Linux普通的锁有什么区别?Linux 普通锁:CAS:原子操作CAS 操作的缺点CAS 实现无锁栈CAS 实现无锁队列什么是CAS?能做什么事情?CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术在并发程序中,如果多个线程共享一个变量,通过CAS可以在不加锁的情况下实现对共享变量的安全的访问。CAS和L...原创 2019-03-31 02:03:31 · 2951 阅读 · 2 评论 -
并行计算程序-梯形积分法
并行计算的分析过程1、将问题分解为多个子问题2、为每个进程分配求解任务3、将求解的结果汇总计算并行程序设计与分治法的分析过程类似,如果想了解分治法的设计思路算法设计与分析之分治法并行程序相比较与串行程序的优点是:它很好地利用的cpu的资源,使得多个处理器同时解决一个问题。这里我们计算 f(x) = x^2 + 2*x + 1;函数在 [0,3] 上的面积代码中MPI的安装使用可以在...原创 2019-03-31 01:29:44 · 5261 阅读 · 2 评论 -
算法与程序设计之贪心算法
文章目录实例问题分析根据分析给出代码贪心算法贪心选择最优子结构贪心算法的一般求解过程实例问题首先我们先来看一个算法题,由这个题来理解贪心算法题目描述:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远,每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5,就代表袋鼠下一跳最多能够跳5米,如果为0,就会陷...原创 2019-04-02 01:22:09 · 1473 阅读 · 0 评论 -
回溯算法解决24点游戏问题
#include <iostream>#include <vector>#include <stack>using namespace std;#define SIZE 4/*********************************************************************************你有 4 张...原创 2019-04-05 02:16:05 · 4006 阅读 · 1 评论 -
数字化婚姻配对尝试
文章目录一、标题:二、题目:三、代码实现一、标题:数字化婚姻配对尝试二、题目:建立一个模型,来模拟推导社会男女择偶过程。为了模型简化,一个人的特性指标有三个,这里假设为财富、样貌、品格,每个指标均可取值1-100之间任意数字。同样也对这3项指标有自己的需求。这3个需求值取值范围都在1-98间,当然三者的和必须为100.所以任意一个人可以用以下数组来表述:G(A、B、C、A1、B1、C1...原创 2019-07-27 09:21:58 · 1122 阅读 · 0 评论