- 博客(7)
- 收藏
- 关注
原创 扩号匹配问题——递归
括号匹配问题我感觉十分有趣,它本身的难度并不是太大,但它考察的点包括了递归传递以及回溯的理解程度,将它一步步完善从开始到完成的过程,相信会对递归有一个更深的了解。解题思路将它简化,从最简单的问题开始,逐步的完善它。假设问题仅仅只是一个左括号匹配一个右括号,与顺序无关。那问题就相对的比较简单了,思路就是统计左括号的个数,然后碰到右括号在抵消一个左括号。(也就是定义俩个关键值为0,一...
2019-11-26 21:51:02
1177
原创 递归---全排列问题
递归—全排列问题1. 题目openjudge 百练全排列问题2. 解题思路递归解题的第一步:分解问题。上图所示,在a b c 的全排列问题上,在枚举出来时,为了确保枚举的正确性,所用的方法和顺序一般就如上图所示。问题的分解也就明显了,也就是将第一个位置的元素依次绑定,对后面的元素的位置进行排序。n个元素的排序问题也就变成了n-1个元素的排序。问题也就分解了。寻找问题的...
2019-11-21 16:50:16
300
2
原创 汉诺塔 --------- 非递归实现 ---- 栈的应用
这篇算是对汉诺塔的补充下篇再聊 ----全排列----递归前言上期讲了汉诺塔的递归实现,递归实现它有它的好处,但也有坏处优点:简洁。在树的前序,中序,后序遍历算法中,递归的实现明显要比循环简单得多。缺点:递归由于是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址以及临时变量,而往栈中压入数据和弹出数据都需要时间。...
2019-11-20 13:58:25
610
1
原创 递归--汉诺塔
递归刚开始学习C语言的时候,感觉有着很多的难点,自学起来真的挺困难的,不过递归无疑是给我印象最为深刻的一个了,递归,简单了来说就是函数本身自己调用自己,当初看着这个定义的时候我觉得没啥难的,当真正了解到它的时候我才知道自己当初多么的天真.递归的经典——汉诺塔问题有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只...
2019-11-14 21:35:47
242
1
原创 快速排序--分步解析
关于快速排序,可以先思考下面这个问题,并试着实现它1、设有一元素为整数的线性表L=(a1,a2,a3,…,an),存放在一维数组A[n]中,设计一个算法,以表中an作为参考元素,将表分为左、右两部分,其中左半部分每个元素小于等于an,右半部分每个元素都大于an,an位于分界位置上(要求结果仍存放在A[n]中)。#下图是思路图解 (结合下方实例代码反复推算科熟练掌握,注意结合编程练习)...
2019-11-10 22:05:41
1378
原创 简单的三种排序算法(冒泡,选择,插入)
冒泡排序 最差,平均时间复杂度O(n*n) __ 稳定的排序每次前后相互比较,每次外循环结束后都将一个最大(最小)的数放到后面,循环n-1次后便可以将所有的数排好序,如图所示 ,每次将最大数移到最后,n-1次后便得到了一个递增序列.代码实现#include<stdio.h>int main(){ int a[101]; int n; scanf...
2019-11-05 20:13:14
293
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人