zoukankan      html  css  js  c++  java
  • 阿里巴巴-2015秋招研发工程师附加题

    1

    public static void main()
    {
        int box=500000;
        string User;
        try
        {
        for(int i=1;i<32767;i++)
        {
            if(user[i].getPoint>99 && user[i].getNBox()=0)
            {
                box--;
                user[i].setNBox()=1;
                user[i].setPoint();
            }
            else
            {
                System.out.println("User:"+user[i].name+"don't have enough point. ");
            }
        }
        catch
        {
            System.out.println("下单失败");
        }
    }
    class user
    {
    public:
        int id;
        string name;
        int getPoint();
        int getBox();
    private:
        int point=99;
        int nBox=0;
    }
    第一题:数据库的设计需要设计一个Use(ID,UserName,Point,nBox),然后还需要建立一个下
    单列表Order(ID,UserName,BoolOfOrder)
    其中,第一个数据表的每个元祖是用来存储每一条用户的信息的,而第二个表的每一条元组
    是用来存储每一个下单成功的订单的信息。
    第二题:瓶颈是当用户量大的时候对于数据表的检索要考虑到数据库结构的设计,所有这是
    最大的瓶颈,这时候就要吧所有用户映射到一个散列表中,然后在对散列表进行查找,这时
    候就会提高效率。
    第三题:数据库事务是需要的,在扣减用户积分和增加用户换的的磨合数量需要同时进行,所以需要数据库食物。

    2

    #include <stdio.h>//头文件
    #include <stdlib.h>
    #include <malloc.h>
    #include <math.h>
    //定义结构体
    typedef struct BiTNode
    {
        int data;
        struct BiTNode *lchild;
        struct BiTNode *rchild;
    }

    BiTNode,*BiTree;//定义结点类型
    int max=-32767;//把max定义得足够小
    int min=32768;//把min定义得足够大
    BiTree CreateBiTree()//先序递归创建树
    {
        int p;BiTree T;
        scanf("%d",&p);//注意每输入两个值的时候用空格各隔开
        if(p==0)
            T=NULL;
        else
        {
            T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间
            T->data=p;
            T->lchild=CreateBiTree();
            T->rchild=CreateBiTree();
        }
        return (T);
    }
    int Max(BiTree T)//求最大(递归算法)
    {
         if(T==NULL)
         return 0;
        if(T!=NULL)
       {
           if(T->data>max)
           max=T->data;
           Max(T->lchild);
           Max(T->rchild);
         
        }
        return max;
    }
    int Min(BiTree T)//求最大(递归算法)
    {
         if(T==NULL)
           return 0;
        if(T!=NULL)
        {
           if(T->data>min)
           min=T->data;
           Min(T->lchild);
           Min(T->rchild);
         
        }
        return max;
    }
    void main()//主函数
    {
        BiTree Ta;
        Ta=CreateBiTree();
        int maxEle_BiTree=Max(Ta);
        int minEle_BiTree=Min(Ta);
        printf("二叉树的节点中相差最大的两个节点之间的插值绝对值为:%d ",abs(maxEle_BiTree-minEle_BiTree));
        
       }

    3

    char * search(char *cpSource, char ch)
    {
    char *cpTemp=NULL, *cpDest=NULL;
    int iTemp, iCount=0;
    while(*cpSource)
    {
    if(*cpSource == ch)
    {
    iTemp = 0;
    cpTemp = cpSource;
    while(*cpSource == ch)
    ++iTemp, ++cpSource;
    if(iTemp > iCount)
    iCount = iTemp, cpDest = cpTemp;
    if(!*cpSource)
    break;
    }
    ++cpSource;
    }
    return cpDest;
    }

  • 相关阅读:
    进程的经典同步问题
    数学余数在计算机的用途
    7.货仓选址 绝对值不等式
    6. 排队打水 排序不等式
    5.合并果子 Huffman树
    4.区间覆盖 区间问题
    3.区间分组 区间问题
    2.最大不相交区间数量 区间问题
    1.区间选点 区间问题
    26.拆分-Nim游戏 博弈论
  • 原文地址:https://www.cnblogs.com/AmatVictorialCuram/p/3945765.html
Copyright © 2011-2022 走看看