2014秋季阿里笔试

来源:互联网 发布:雅思大作文结构知乎 编辑:程序博客网 时间:2024/04/27 17:32

1.写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值

// Bitree.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;typedef int type;//定义数结点typedef struct bNode{type data;struct bNode *lchild;struct bNode *rchild;}bNode,*bTree;typedef struct RESULT{    type Max;  //最大数据type Min;  //最小数据}RESULT;RESULT res;//先序创建二叉树  void CreateBitree(bTree &T){type ch;cin>>ch;if(-1==ch){ T=NULL;}else{   T=(bTree)malloc(sizeof(bNode));   if(NULL==T)   {     cout<<"申请内存失败!"<<endl; return ;   }   T->data=ch;   CreateBitree(T->lchild);   CreateBitree(T->rchild);}}void MaxData(bTree T){if(NULL==T){return;}else{if(T->data>res.Max)res.Max=T->data;MaxData(T->lchild);MaxData(T->rchild);}}void MinData(bTree T){if(NULL==T){return;}else{if(T->data<res.Min)res.Min=T->data;MinData(T->lchild);MinData(T->rchild);}}int _tmain(int argc, _TCHAR* argv[]){bTree T;int sum=0;CreateBitree(T);res.Max=T->data;res.Min=T->data;    MaxData(T);MinData(T);cout<<res.Max-res.Min<<endl;system("pause");return 0;}


 

 

 

2.定义2个字符串query和text, 如果query里最大连续字符子串在text中存在,则返回子串长度. 例如: query="acbac",text="acaccbabb", 则最大连续子串为"cba", 则返回长度3.

此题用java或c++中的string较为简单.

#include<iostream>#include<string>using namespace std;int QueryString(string query,string text);int main(){  string query="acbac";string text="acaccbabb";cout<<QueryString(query,text)<<endl; system("pause");return 0;}int QueryString(string query,string text){int n=query.length();for(int i=n;i>0;i--){int m=n+1-i; //i个字母连续的子串个数int cur=0;for(int j=0;j<m;j++) //将字串放入temp数组中   从连续出现n个字母的子串开始{cur=j+cur;string dt=query.substr(cur,i);if(text.find(dt)!=text.npos) //如果在text存在{return dt.length();}}}return  -1;}


0 0
原创粉丝点击