算法设计
onlyloveonce
我是学生。其实我还是程序猿
展开
-
递归树求解递归算法的时间复杂度(看这篇博客看懂的)
递归算法时间复杂度的计算方程式一个递归方程: 在引入递归树之前可以考虑一个例子: T(n) = 2T(n/2) + n2 迭代2次可以得: T(n) = n2 + 2(2T(n/4) + (n/2) 2) 还可以继续迭代,将其完全展开可得: T(n) = n2 + 2((n/2) 2 + 2((n/22)2 + 2((n/23) 2 + 2((n/24)...转载 2018-09-08 22:04:20 · 26047 阅读 · 1 评论 -
算法导论------递归算法的时间复杂度求解
文章总结的很好,为了尊重版权。附上链接https://blog.csdn.net/so_geili/article/details/53444816#3.3转载 2018-09-08 22:03:05 · 317 阅读 · 0 评论 -
字符串反转--句子反转和单词反转
#include <iostream>using namespace std;//所有单词反转void allReverse(char s[]){ int i=0,j=strlen(s)-1;//别忘了减1 char temp ; while(j > i){ temp = s[i];s[i]=s[j];s[j]=temp; j--; i++; } c...原创 2018-08-23 23:06:19 · 340 阅读 · 0 评论 -
单链表就地逆置的两种方法(递归与普通循环)
//1.用递归算法,对于不带头结点的单链表(a1,a2,a3,a4,a5,a6)逆置后的结果为(a6,a5,a4,a3,a2,a1)//考虑递归算法,若只有一个结点,则直接返回,若存在两个结点(a1,a2)则需要做的操作有: a2->next=a1;a1->next=NULL;return a2;//a2即新的头结点,若有三个结点,则应先将子链(a2,a3)先逆置且返回该...转载 2018-08-23 21:37:14 · 6380 阅读 · 0 评论 -
交互两个数(不引入第三个变量)
#include <stdio.h> ...原创 2018-08-22 15:05:27 · 262 阅读 · 0 评论 -
一步一步写数据结构(二叉树的建立和遍历,c++)传地址引用
简述:二叉树是十分重要的数据结构,主要用来存放数据,并且方便查找等操作,在很多地方有广泛的应用。二叉树有很多种类,比如线索二叉树,二叉排序树,平衡二叉树等,本文写的是最基础最简单的二叉树。思路:二叉树的建立采用的是递归的思想:给定一个指向根节点的指针,然后递归调用ceate()函数,自动生成一个二叉树。就像是在地上挖了个坑(根节点),然后他会拿着铲子(create函数)按照一定的规...转载 2018-07-22 21:21:20 · 409 阅读 · 0 评论 -
java递归实现阶乘factorial
public class jiecheng { static int result=1; public static int jiecheng(int n) { if (n==1) { return 1; } else return n*jiecheng(n-1); // if (n>0) {// result = result*...原创 2018-07-19 22:01:03 · 867 阅读 · 0 评论 -
京东2018秋季校招——括号匹配
import java.util.Scanner;import java.util.Stack; /** * 京东2018秋招Android * 括号匹配方案 * 合法的括号匹配序列被定义为: * 1. 空串""是合法的括号序列 * 2. 如果"X"和"Y"是合法的序列,那么"XY"也是一个合法的括号序列 * 3. 如果"X"是一个合法的序列,那么"(X)"也是一个合法转载 2018-07-19 21:42:32 · 250 阅读 · 0 评论 -
构建二叉树并求其深度
/*题目描述:输入:第一行为整数n(n >= 2),表示二叉树节点总数后面带n-1行,每行为整数a和整数b的输入格式,a表示父亲节点,b表示a的一个子节点输出:二叉树的深度示例输入:50 10 21 31 4输出:3*/ #include <iostream>#include <cstdio>using namespace std...转载 2018-07-24 20:25:17 · 1435 阅读 · 0 评论 -
100阶乘后有多少个0
思路:对于大数据问题应考虑是否会溢出,先看看5的阶乘有1个0, 10的阶乘有2有0, 遇到5就会产生1个0, 10本身有1个0,照这样到100就是有5,10,15,20,25,30,35.。。。95,100,共产生21个0,但25=5*5 ,50=5*5*2 , 75=5*5*3,都含有2个5所以还要加3次就是24个0代码:#include <stdio.h&g...原创 2018-07-24 19:49:03 · 884 阅读 · 0 评论 -
傻子也能看懂的弗洛伊德算法(转)
暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。 ...转载 2018-04-24 11:23:59 · 320 阅读 · 0 评论 -
例题4-3救济金发放
n个人站成一圈,逆时针编号为1到n,有两个官员,A从1开始逆时针发放,B从n开始顺时针发放。在每一轮中,官员A数k个就停下来,官员B数m个就停下来了(有可能两个官员停在同一个人身上)。接下来被官员选中的人离开队伍。本来逆时针顺时针应该写两个go函数,但是发现可以合并通过取余运算和添加1和-1。这个问题最关键的问题就是确定移动的步长,并且在数组中循环,当遇到被换成0的元素就继续下一个。p=(p+d+...原创 2018-03-14 23:08:57 · 330 阅读 · 0 评论 -
递归实现factorial
#include<stdio.h>long long factorial(long n){ //printf("%d\n",n); return n == 0?1:factorial(n-1)*n;}int main(){ printf("%lld\n",factorial(10)); return 0;}原创 2018-03-14 22:19:03 · 365 阅读 · 0 评论 -
开灯问题
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]题目有n盏灯,编号为1~n,第一个人把所有灯打开,第二个人按下所有编号为2的倍数开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),一次类推,一共有k个人,问最后哪些灯开着?输入: 7 3 输出 : 1 5 6原创 2018-01-13 18:49:56 · 187 阅读 · 0 评论 -
数据结构和算法分析之排序篇--归并排序(Merge Sort)和常用排序算法时间复杂度比较(附赠记忆方法)
归并排序的基本思想归并排序法是将两个或以上的有序表合并成一个新的有序表,即把待排序序列分成若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。注意:一定要是有序序列! 归并排序实例: 合并方法:设r[i……n]由两个有序子表r[i….m]和r[m+1……n]组成,两个子表长度分别为m-i+1、n-m。 1. J=m+1 ;k=i ; I=i ; 置两个子表的起始...转载 2018-09-08 22:06:38 · 1713 阅读 · 0 评论