• joj 1329 二叉树


    给出中根序列和后根序列求路径值最小的叶节点,各种队,各种栈(话说一开始理解错题了,英语不好的悲哀)

    #include<iostream>
    #include<stack>
    #include<queue>
    using namespace std;
    int mmaaxx;
    int k;
    void tree(stack<int> s1,stack<int> s2,int m)
    {
         if(s1.size()==1&&s2.size()==1)
         {
            if((m+s1.top())<mmaaxx)
            {
               mmaaxx=m+s1.top();
               k=s1.top();
            }
            return ;
         }
         if(s1.size()==0)
            return;
         int t=s2.top();
         s2.pop();
         stack<int> p1,p2,q1,q2;
         while(s1.top()!=t)
         {
             p1.push(s1.top());
             p2.push(s2.top());
             s1.pop();
             s2.pop();
         }    
         s1.pop();
         while(p1.size()!=0)
         {
            q1.push(p1.top());
            q2.push(p2.top());
            p1.pop();
            p2.pop();
         }
         tree(s1,s2,m+t);
         tree(q1,q2,m+t);
    }
    int main()
    {
        int total_case,iii;
        scanf("%d",&total_case);
        getchar();
        for(iii=0;iii<total_case;iii++)
        {
             k=0;
             mmaaxx=10000;
             char str1[500],str2[500],str[500];
             stack<int> s1,s2;
             queue<int> s;
             int a;
             int i=0,j=0;
             gets(str1);
             gets(str2);
             for(i=0;str1[i]!='\0';i++)
             {
                if(str1[i]==32)
                {
                   str[j]='\0';
                   s1.push(atoi(str));
                   j=0;
                }
                else
                {
                    str[j]=str1[i];
                    j++;
                }
             }
             str[j]='\0';
             s1.push(atoi(str));
             j=0;
             for(i=0;str2[i]!='\0';i++)
             {
                if(str2[i]==32)
                {
                   str[j]='\0';
                   s2.push(atoi(str));
                   j=0;
                }
                else
                {
                    str[j]=str2[i];
                    j++;
                }
             }
             str[j]='\0';
             s2.push(atoi(str));
             j=0;
             tree(s1,s2,0);
             printf("%d\n",k);
        }
    }

  • 相关阅读:
    Django学习(文件上传与下载)
    Django学习(实现登录功能)
    Django学习(实现注册功能)
    Django学习(环境配置)
    Android-Universal-Image-Loader异步加载图片框架学习
    Android自定义控件_View的绘制流程
    Android自定义控件_Canvas分析
    属性方法介绍——View(1)
    Android平滑移动——Scroller类研究
    记录一个前端二级导航栏的淡入淡出效果
  • 原文地址:https://www.cnblogs.com/dchipnau/p/4985947.html
Copyright © 2020-2023  润新知