现在的位置: 首页 > 综合 > 正文

创新工场三道编程题

2013年12月11日 ⁄ 综合 ⁄ 共 1837字 ⁄ 字号 评论关闭

题目1:把一串英文句子按单词反序输出。如:"good moring" -> "moring good"

void Reverse(char *str,int len)

{

char* pBegin=str;

char* pEnd=pBegin+len-1;

while(pBegin<pEnd)

{

swap(*pBegin++,*pEnd--);

}

return;

}

int main()

{

char str[]="Good Morning I have a good day Thank You";

Reverse(str,strlen(str));

cout<<str<<endl;

int len=0;

char* p=str;

while(*p!='\0')

{

len++;

if(*p==' ')

{

Reverse(p-len+1,len-1);

len=0;

}

p++;

}

Reverse(p-len,len);

cout<<str<<endl;

return 0;

}

题目2:输入一个正整数N,输出大于N且最接近这个数的素数。

bool isPrime(int N)

{

for(int i=2;i<=sqrt(double(N));i++)

{

if(N%i==0)

{

return false;

}

}

return true;

}

int GetNum(int N)

{

int i=N;

while(1)

{

if(isPrime(i))

{

return i;

}

i++;

}

}

题目3:用数组实现排序二叉树。

typedef struct BiTNode

{

int m_value;

struct BiTNode* lchild;

struct BiTNode* rchild;

}*BiTree,BiTNode;

#define M 100001

struct BiTNode_G

{

BiTNode_G()

{

m_value=-1;

}

int m_value;

int lchild;

int rchild;

}BiTNodeG[M];

int len=0;//数组长度

int CreateBiTree_G(int num,int index)

{

if(BiTNodeG[index].m_value==-1)//根节点

{

BiTNodeG[index].m_value=num;

BiTNodeG[index].lchild=index*2+1;

BiTNodeG[index++].rchild=index*2+2;

return 0;

}

if(num<BiTNodeG[index].m_value){//建立左子树

CreateBiTree_G(num,index*2+1);

}

else{

CreateBiTree_G(num,index*2+2);

}

}

//排序二叉树

//向二叉树root中插入节点num

void CreateBiTree(int num,BiTree& root)

{

if(root==NULL)

{

root=(BiTree)malloc(sizeof(BiTNode));

root->lchild=NULL;

root->rchild=NULL;

root->m_value=num;

return;

}

if(num<=root->m_value)

{//插入左子树中

CreateBiTree(num,root->lchild);

}

else

CreateBiTree(num,root->rchild);

}

void InOrderTraverse(BiTree root)

{

if(root)

{

InOrderTraverse(root->lchild);

cout<<root->m_value<<" ";

InOrderTraverse(root->rchild);

}

}

void InOrderTraverseG(int index)

{

if(BiTNodeG[index].m_value!=-1)

{

InOrderTraverseG(index*2+1);

cout<<BiTNodeG[index].m_value<<" ";

InOrderTraverseG(index*2+2);

}

}

int main()

{

BiTree root=NULL;

int a[]={12,2,3,10,8,4,5};

for(int i=0;i<sizeof(a)/sizeof(int);i++)

{

CreateBiTree_G(a[i],0);

}

InOrderTraverseG(0);

}

【上篇】
【下篇】

抱歉!评论已关闭.