![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithm
大米粒ing
只有很努力才能看起来毫不费力
展开
-
二叉树的非递归遍历(c语言 链式储存)
#include#include #define MAXSIZE 200 /* 定义二叉树节点类型 */ typedef struct node { char data; struct node *lchild, *rchild; }BTNode; /* 函数声明 */ BTNode* CreatBitTree();原创 2013-03-08 23:14:03 · 1783 阅读 · 0 评论 -
最小生成树
设G = (V,E)是无向连通带权图,即一个网络。E中的每一条边(v,w)的权为c[v][w]。如果G的子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树。生成树上各边权的总和称为生成树的耗费。在G的所有生成树中,耗费最小的生成树称为G的最小生成树。构造最小生成树的两种方法:Prim算法和Kruskal算法。 一、最小生成树的性质 设G = (V,E)是连通带权图,U是V原创 2013-10-27 23:08:31 · 916 阅读 · 0 评论 -
快速排序算法(牢记)
快排:// 修改自《C programing language》#include#include#includevoid qsort(int v[], int left, int right){ int i,last; if(left >= right) return; std::swap(v[left],v[(left+right)/2]); last = left原创 2013-09-29 22:36:58 · 1004 阅读 · 0 评论 -
单链表存在环
今天面试,遇到这个题,回来网上搜了搜,写的不错,稍微修改转载,转载地址在下面。特此说明1、如何判断一个链表是不是这类链表? 2、如果链表为存在环,如果找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进原创 2013-10-25 23:49:13 · 764 阅读 · 0 评论 -
B是不是A的子结构
摘自:《剑指offer》面试题18//题目:输入两颗二叉树A和B,判断B是不是A的子结构。二叉树结点的定义如下: #includeusing namespace std;struct BinaryTreeNode{ int value; BinaryTreeNode *pLeft; BinaryTreeNode *PRight;};bool hasSubtree(Bin原创 2013-10-03 21:20:11 · 1145 阅读 · 0 评论 -
高精度运算类bign
本例选自。#include#includeusing namespace std;class bign{ private: enum{maxn = 200}; int len, s[maxn]; public: bign(); bign(int num); bign(const char * str); bign& operator =(int num)原创 2013-10-02 17:58:24 · 1084 阅读 · 0 评论 -
Power(int base, int exponent) 函数实现
这个是个高效的算法,时间复杂度为 O(logn)原理:a的n次方:#include#includeusing namespace std;double PowerWithUnisgnedExponent(double base ,unsigned int exponent){ if(exponent == 0) return 1; if(exponent原创 2013-09-30 20:16:35 · 1258 阅读 · 0 评论 -
青蛙跳台阶(斐波那契数列应用)
(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。(2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?问题1:题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:输入包括一个整数n(原创 2013-09-30 12:31:17 · 1614 阅读 · 0 评论 -
做题中遇到的问题
1. c++ 中 long long 型 64位例子:long long x1; scanf("%lld", &x1); printf("%lld",x1);2. PI = 4.0 * atan(1.0);3.程序运行时间的计算: printf("Time used = %.2lf\n",(double)clock原创 2013-04-07 18:04:59 · 840 阅读 · 0 评论 -
算法竞赛入门经典 习题笔记
1.排序(permutation)用1,2,3...9这9个数字组成3个三位数abc,def,ghi,每个数字恰好用一次,要求: abc:def:ghi = 1:2:3.输出所有的解.提示:不必太动脑筋.算法思想:确定满足比例关系的3个三位数是否是由9个不同的数组成.可以分离这3个三位数的每一位,用一个长度为>=9的数组标记.假设有数字122;则数组s[1] = s[2] = 1;原创 2013-04-15 16:51:49 · 1408 阅读 · 0 评论 -
6.3.3 二叉树重建 已知前序和中序求后序
在一棵二叉树总,前序遍历结果为:DBACEGF,中序遍历结果为 ABCDEFG,求后序遍历结果。我们知道:前序遍历方式为:根节点->左子树->右子树中序遍历方式为:左子树->根节点->右子树后序遍历方式为:左子树->右子树->根节点从这里可以看出,前序遍历的第一个值就是根节点,然后再中序遍历中找到这个值,那么这个值的左边部分即为当前二叉树的左子树部分前序遍历原创 2013-05-21 21:02:26 · 1344 阅读 · 0 评论 -
6.3.2 层次遍历
输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个节点的值。每个节点都按照从根节点到它的移动序列给出(L表示左,R表示右)。在输入中,每个节点的左括号之间没有空格,相邻节点之间用一个空格隔开。每棵树的输入用一对空括号()结束(这对括号本身不代表一个结点),如图所示。原创 2013-05-18 19:49:28 · 943 阅读 · 0 评论 -
已知三角形三顶点坐标,求三角形面积的表达式 找出求果园里的树的解决方案
已知直角坐标系3点p(a,b),m(c,d),n(e,f) 求三角形pmn面积解:无论三角形的顶点位置如何,△PMN总可以用一个直角梯形(或矩形)和两个直角三角形面积的和差来表示而在直角坐标系中,已知直角梯形和直角三角形的顶点的坐标,其面积是比较好求的。下面以一种情形来说明这个方法,其它情形方法一样,表达式也一样(表达式最好加上绝对值,确保是正值)如图情形(P在上方,M原创 2013-04-23 11:33:08 · 9499 阅读 · 1 评论 -
多少块土地——欧拉定理
原题:有一块椭圆的地,你可以在边界上选n个点,并两两连接得到n(n-1)/2条线段。它们最多能把土地分成多少个部分?解:最优方案是不让三条线段交与1点。欧拉公式:V-E+F=2. 详解见:http://baike.baidu.cn/view/2189637.htm其中V是顶点(即所有线段的断点数加上交点数),E是边数(即n段椭圆弧加上这些线段被切成的段数),F是面数(即土地块数加原创 2013-05-16 17:17:48 · 1281 阅读 · 0 评论 -
字母重排 问题 重新解答
输入一个字典(用******结尾),然后再输入若干单词。每输入一个单词w,你都需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(如果不存在,输出:()。输入单词之间用空格或空行隔开,且所有输入单词都由不超过6个小写字母组成。注意,字典中的单词不一定按字典序排列。样例输入:tarp given score refund only trap work原创 2013-05-15 23:57:52 · 1222 阅读 · 0 评论 -
交换两个变量的值,不使用第三个变量的四种法方
通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int a,b;a=10; b=15;int t;t=a; a=b; b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。转载 2014-09-19 01:19:50 · 1019 阅读 · 0 评论