美文网首页
数算第三章书面作业

数算第三章书面作业

作者: 细雨沉沙 | 来源:发表于2018-10-09 21:41 被阅读0次

    3.1

    top():

    int flag=0              //统计队列中元素个数的同时将元素压入a 
    while(!A.empty())
    {
        flag++;
        T tmp=A.front();
        A.pop_front();
        B.push_back(tmp);
    } 
    while(flag-1)           //弹出除最后一个之外的元素便得到top() 
    {
        T tmp=B.front();
        A.push_back(tmp) 
        B.pop_front();
        flag--;
    }
    int result=B.front();
    

    时间复杂度为O(n)
    pop():

    int flag=0              //统计队列中元素个数的同时将元素压入a 
    while(!A.empty())
    {
        flag++;
        T tmp=A.front();
        A.pop_front();
        B.push_back(tmp);
    }
    while(flag-1)           //将除了最后一个元素之外的元素都转移给A 
    {
        T tmp=B.front();
        A.push_back(tmp) 
        B.pop_front();
        flag--;
    }
    B.pop();//弹出最后一个元素实现pop()
    

    时间复杂度为O(n)
    push():

    A.push_back(T x)
    

    时间复杂度为O(1);
    empty()

    A.empty();
    

    时间复杂度为O(1);

    3.2

    设F(n)为n个数出栈的序列个数,假设最后出栈的元素为k(k<=n),那么比k小的k-1个元素先于k出栈,此种情况有F(k-1)个,比k大的元素先于k出栈的情况有F(n-k)个(F(0)=1),由于这两中情况互不干扰,所以可以相乘,既有F(n)=
    f(0)f(n-1)+f(1)f(n-2)+……+f(n-1)f(0)=C(2n,n)/n+1;

    3.3

    最外层循环while最多循环n次,内部循环最多2n次,故时间复杂度为O(n^2)

    相关文章

      网友评论

          本文标题:数算第三章书面作业

          本文链接:https://www.haomeiwen.com/subject/tngyaftx.html