随笔分类 - 计算机算法设计与分析
摘要:图文详解汉诺塔(附C语言实现代码) 一、前言 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,
阅读全文
摘要:算法 | 求一个数组的所有子集 目录 一.例子 二.代码 三.分析 一.例子现在有一个数组如下: ar[3] = {1,2,3};那么这个集合的全部子集为 {ϕ�} {1} {2} {3} {1,2} }{2,3} {1,3} {1,2,3}。 二.代码#include<stdio.h> void
阅读全文
摘要:大整数的乘法(递归方程+复杂度分析) 递归方程+复杂度分析大整数的乘法背景介绍设X和Y都是n位二进制整数,现在需要计算它们的乘积XY,如果使用小学的思路设计算法,那么需要n2次乘法和n-1次加法,效率太低,那么能够设计出一种算法能够提高效率? 方案一将n位二进制整数X和Y都分为两段,每段的长度为n/
阅读全文
摘要:递归之四柱汉诺塔 四塔问题:设有A,B,C,D四个柱子(有时称塔),在A柱上有由小到大堆放的n个盘子,如图所示。 今将A柱上的盘子移动到D柱上去。可以利用B,C柱作为工作栈用,移动的规则如下:①每次只能移动一个盘子。②在移动的过程中,小盘子只能放到大盘子的上面。设计并实现一个求解四塔问题的动态规划算
阅读全文
摘要:Leetcode题解 | 三步学会所有递归 995的小媛 程序媛驿站 6天前 收录于话题#题解 「递归」在算法初学者眼中总是一个令人头疼的问题 但其实,这种可以将一个问题拆解为多个重复子问题的算法只要我们掌握了其中的 “套路” ,便可以游刃有余的解决所有递归类问题。 下面我们就开始吧~ 一、青蛙跳台
阅读全文
摘要:Ackerman函数(C语言) Ackerman函数递归实现(C语言)此函数在此不做详细介绍。下面直接上代码。 输入样例:4 312输出样例:6553612源代码 #include<stdio.h>int Ackerman(int n, int m){ if(n<0 || m<0) return 0
阅读全文
摘要:一文读懂算法复杂度分析 一、衡量算法性能的标准 数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量算法代码的执行效率呢?那就用要「时间复杂度」、「空间复杂度」分析。其实,只要讲到数据结构与算法,就一
阅读全文
摘要:算法篇二: 复杂度分析之 最好、最坏、平均、均摊时间复杂度 之前讲了基本的复杂度分析算法复杂度分析之:如何分析、统计算法的执行效率和资源消耗? 这篇文章会继续给讲四个复杂度分析方面的知识点,最好情况时间复杂度(best case time complexity)、最坏情况时间复杂度(worst ca
阅读全文
摘要:算法篇一 :复杂度分析之 如何分析、统计算法的执行效率和资源消耗? 做为程序员我们都知道数据结构和算法十分重要,同时学好数据结构和算法对大多数程序员来说也是相当困难的一件事情,不得不承认自己也是这大部分中的其中一个🙍,但是如果想让自己的编程之路走的更长远,必须要啃下这块难啃的骨头🦴。所以我准备认
阅读全文
摘要:如何分析算法的「时间复杂度」? 做为程序员我们都知道数据结构和算法十分重要,同时学好数据结构和算法对大多数程序员来说也是相当困难的一件事情,不得不承认自己也是这大部分中的其中一个 ,但是如果想让自己的编程之路走的更长远,必须要啃下这块难啃的骨头 。所以我准备认真的开始了,希望自己可以坚持下去。喜欢的
阅读全文
摘要:算法设计学习日志 线性时间选择 早就开始学算法了,但一直没有特别用功学,现在我决定了,两天解决一个经典算法问题,并且写成博客,既是自我监督,以后忘了的话也好复习。今天的内容是线性时间选择, 1. 问题描述2. 思考分析3. 实现解决4. 程序清单5. 总结分析 1. 问题描述 线性时间选择问题的引入
阅读全文
摘要:算法复杂度简介 目录 一、简介 二、O(1),O(n),O(logn),O(nlogn)…的区别及分析方法 三、O(n)—线性阶 四、复杂度O(n^2)—平方阶 五、复杂度O(logn)—对数阶 六、复杂度O(nlogn)—线性对数阶 七、O(1)—常数阶 八、时间复杂度的优劣对比 一、简介 算法复
阅读全文
摘要:算法的时间与空间复杂度(一看就懂) 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个
阅读全文
摘要:算法之循环赛日程表 循环赛日程表 一.问题描叙 设有n=2^k个运动员,要进行网球循环赛。现在要设计一个满足以下要求的比赛日程表 (1).每个选手必须与其他n-1个选手各赛一场 (2).每个选手一天只能赛一次 (3).循环赛一共进行n-1天 二.问题分析 按此要求可将比赛日程表设计成n行n-1列的表
阅读全文
摘要:C++经典算法问题:循环赛日程安排问题(分治思想) 问题说明 设有n=2k个选手要进行网球循环赛, 要求设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次。 按此要求,可将比赛日程表设计成一个 n 行n-1列的二维表, 其中,第 i 行第
阅读全文
摘要:最接近点对问题 一维最接近点问题#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2023/1/5 20:36# @Author : Lili# @File : 一维最接近点对问题.py# @Description : 递归与分治,来探索二维
阅读全文
摘要:平面最接近点对问题(分治法) 问题描述参见:https://www.cnblogs.com/zyxStar/p/4591897.html 代码参考:http://blog.csdn.net/qq_28666193/article/details/53351482(原代码中有几处错误,我作了修改) 头
阅读全文