算法训练
文章平均质量分 60
zhangtonghui816
这个作者很懒,什么都没留下…
展开
-
带有错误的非递归遍历
#include #include using namespace std;struct Node{ Node* lchild; Node* rchild; char value;};class list{public: list(); void InOrder(); void PreOrder(); void AfterOrder();private: Node原创 2013-03-07 23:48:30 · 256 阅读 · 0 评论 -
异或交换时候的注意点(替代temp变量)
#include using namespace std;void reverse(char *str){ //n为字符串长度 int n=strlen(str)-1; for(int i=0;i<=n/2;++i){ str[i]=str[i]^str[n-i]; str[n-i]=str[i]^str[n-i]; str[i]=str[i]^str[n原创 2013-03-27 14:21:28 · 575 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
#include using namespace std;void transfer(int *L,int len){ //i,j指针一前一后 int i=0,j=len-1; while(i<j){ //如果L[i]为奇 if(L[i]%2==1) ++i; //如果L[j]为偶 if(L[j]%2==0) --j; if(L[i]%2==0 &原创 2013-03-28 19:06:59 · 642 阅读 · 0 评论 -
判断平衡二叉树中所需要注意的问题
发现程序有问题,问题在d1>d2?d1:d2+1上'+'的优先级高于':',所以应该改为(d1>d2?d1:d2)+1//是否为平衡二叉树#include #include using namespace std;struct node{ node *lchild,*rchild; int value;};class list{public: l原创 2013-03-27 22:50:52 · 609 阅读 · 0 评论 -
利用队列实现层序遍历
#include #include using namespace std;struct node{ node *lchild,*rchild; int value;};struct Node{ Node *next; node* value;};//用链队class Queue{public: Queue(); void EnQueue(node* num原创 2013-03-27 18:24:26 · 1296 阅读 · 0 评论 -
二元树中和为某一值的所有路径(我看到网上很多答案是错的)
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / \原创 2013-03-27 10:48:55 · 931 阅读 · 0 评论 -
二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11因此返回true。#include原创 2013-03-27 12:35:02 · 665 阅读 · 0 评论 -
输出所有根节点到叶子节点的长度(以二叉排序树为例)
#include #include using namespace std;//节点struct node{ node *lchild,*rchild; int value;};//二元查找树class list{public: list(); //这里的m_print函数用做递归,print函数相当于外面的一个套子 void pri原创 2013-03-27 09:55:27 · 1301 阅读 · 0 评论 -
翻转句子中单词的顺序
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。#include using namespace std;void reverse_part(char*,int pBegin,int pEnd);原创 2013-03-27 14:14:48 · 638 阅读 · 0 评论 -
腾讯笔试题--递归编程(2)
题目: 对一个正整数作如下操作:如果是偶数则除以2,如果是奇数则加1,如此进行直到1时操作停止,求经过9次操作变为1的数有多少个?#include using namespace std;int count=0;void fun(int num,int step){ if(num<=0) return; if(step==1){ cout<<num<<"原创 2013-03-23 20:03:34 · 858 阅读 · 0 评论 -
栈的push、pop序列
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,po原创 2013-03-28 12:33:38 · 788 阅读 · 0 评论 -
堆排序
#include using namespace std;int L[]={0,50,40,60,30,70,10,90,80,20};//数组从L[1]开始int length=sizeof(L)/sizeof(int)-1;void Swap(int*,int,int);void HeapAdjust(int*,int,int);void HeapSort(int *L原创 2013-03-13 22:20:58 · 639 阅读 · 0 评论 -
例题1:勇士斗恶龙
题目:你的王国里有一条n个头的恶龙,可以雇佣骑士把它杀死,村里有m个骑士,能力值为x的骑士可以砍掉一个恶龙直径不超过x的头,且需支付金币x,怎样才能杀死恶龙并且支付金币最少?(一个骑士只能砍一个头,雇佣一次)#include using namespace std;void main(){ //这里偷懒不输入了,a[]表示恶龙的头的直径,b[]表示骑士的能力值 //int a[2]=原创 2013-02-25 23:27:19 · 1777 阅读 · 0 评论 -
求二元查找树的镜像
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: 8 / \ 6 10 /\ /\5 7 9 11输出: 8 / \ 10 6 /\ /\11原创 2013-03-27 16:39:46 · 503 阅读 · 0 评论