
数据结构与算法
文章平均质量分 74
Mastli
我会更强
展开
-
搞懂树状数组
这篇文章真的写的很好!转载自:http://blog.youkuaiyun.com/int64ago/article/details/7429868写下这个标题,其实心里还是没底的,与其说是写博帖,不如说是做总结。第一个接触树状数组还是两年前,用什么语言来形容当时的感觉呢?……太神奇了!真的,无法表达出那种感觉,她是那么的优雅,10行不到的代码,却把事情干的如此出色转载 2015-08-06 14:37:58 · 410 阅读 · 0 评论 -
全排列的递归算法(包括字典序输出和非字典序输出)
第一种:(字典序)#include #include #include int a[10],p[10],vis[10];//标记为1则说明已固定int n;void digui(int l){ int i; if(l>n){ for(i=1;i<n;i++){ printf("%d ",p[i]); }原创 2015-05-16 17:47:23 · 4048 阅读 · 1 评论 -
C语言四舍五入的实现方法。
今天在oj上看到了一道看起来很简单的题目,结果四舍五入竟然找不到很好的算法实现,百度了一下发现...这么简单!!!所以还是要继续努力啊,加油!Description在我们的日常学习、生活、工作中要分得清主次,既能抓问题的主要矛盾,也能注意到次要矛盾。例如两个整数相除,结果的整数部分是它的重心之所在,但是小数部分也不能忽视。现给出2个整数a,b,求a/b的整数部分和小数部分。原创 2015-04-16 21:00:27 · 61553 阅读 · 4 评论 -
递归法实现反向输出字符串
#include #include char s[100];char digui(){ char c; scanf("%c",&c); if(c!='\n'){ printf("%c",digui()); } return c;}int main(){ printf("%c",digui()); return 0原创 2015-05-28 23:15:33 · 827 阅读 · 0 评论 -
约瑟夫问题——链表实现
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因原创 2015-05-28 23:16:49 · 1319 阅读 · 0 评论 -
线索二叉树的实现
#include #include typedef char elemtype;//线索储存标志位//link(0)表示指向左右孩子的指针//link(1)表示指向前驱后继的线索typedef enum {link,thread}pointertag;typedef struct bithrnode{ char data; struct bithrnode *lc原创 2015-05-28 23:32:41 · 535 阅读 · 0 评论 -
迪杰斯特拉/dijkstra 算法模板(详细注释)
迪杰斯特拉算法的模板(带详细注释)原创 2015-08-17 08:03:12 · 6443 阅读 · 2 评论 -
八皇后 c语言递归实现方法(带注释)
#include #include int count;//递归法实现八皇后问题//参数row表示起始行,参数n表示列数//参数(*chess)[8]表示指向棋盘每一行的指针int notdanger(int row,int j,int (*chess)[8]){ int i,k; //判断列方向 for(i=0;i<8;i++){ if(*原创 2015-05-28 23:08:18 · 8463 阅读 · 7 评论 -
分治法实现全排列
转自 http://www.wutianqi.com/?p=1166我们将使用分治法实现一个全排列算法。先来看一下算法实现后的效果:['a','b','c'].permutation ["a", "b", "c"],["a", "c", "b"],["b", "a", "c"],["b", "c", "a"],["c", "b", "a"],["c", "转载 2015-04-20 21:16:59 · 1982 阅读 · 0 评论 -
分治法实现全排列
转自 http://www.wutianqi.com/?p=1166我们将使用分治法实现一个全排列算法。先来看一下算法实现后的效果:['a','b','c'].permutation ["a", "b", "c"],["a", "c", "b"],["b", "a", "c"],["b", "c", "a"],["c", "b", "a"],["c", "转载 2015-04-20 21:25:14 · 604 阅读 · 0 评论 -
动态数组自增策略的复杂度分析
由于编程时很难准确预知需要多少空间。比如申请了一个定长的数组存放数据,但是突然发现数组填满了,因此需要一个更大的数组来填放数据,这就涉及了数组的自增策略问题。定增策略定增策略每次扩容将数组长度增加定长。设我们需要一个长为nnn的数组,数组初始长度为III,每次扩容的大小为III,则n=(m+1)In=(m+1)In=(m+1)I,mmm为扩容次数。第一次扩容需要一块2I2I2I长度的数组空间来...原创 2019-06-07 16:38:43 · 663 阅读 · 3 评论