当前位置: 首页 > news >正文

自己怎么1做网站/交换链接案例

自己怎么1做网站,交换链接案例,wordpress 文章归档设置,做系统哪个网站上的好转载自:http://www.cnblogs.com/nanke/archive/2011/09/19.html 题意: 去掉题目背景,给你一个串,转化为一棵树,输出先序遍历节点的顺序; 分析: 整个串由节点名字,(、)、, 组成&#…

转载自:http://www.cnblogs.com/nanke/archive/2011/09/19.html

 

题意:

去掉题目背景,给你一个串,转化为一棵树,输出先序遍历节点的顺序;

分析:

整个串由节点名字,'('、')'、',' 组成,遇到一个括号时,当前左括号是当前括号内节点的父节点,括号内用','隔开的是兄弟节点,整体就是一颗树;

若要将该串转化为树,再进行一次DFS的话,我想应该会超时吧。所以第一感觉就是用栈模拟整个串来遍历该树,用队列来保存遍历节点的顺序,用数组应该会更快吧,不过不知道大概会有多大,所以就偷一下懒,直接用队列了。

队列是用来保存遍历节点的顺序的,而栈保存的是当前遍历到的节点的父节点

模拟的过程:

1):模拟过程一遍给节点名字编号;

2):当遇到 '(' 时,表示当前节点有子节点,所以把当前节点同时压入栈,和队列;

3):当遇到 ')' 时,表示当前父节点的所以子节点已经遍历完,所以将当前节点压入队列,当时要再次访问父节点,所以将当前父节点也压入队列,而且,要弹出栈;当然,这时还要考虑一个问题:就是 ')'前面是否也为一个 ')',若是,则不需要将当前节点压入队列,因为已经压入过了;

4):当遇到 ',' 时,表示遍历到了一个叶节点,将当前节点压入队列,当时要再次访问父节点;同上,此时还要考虑一个问题,就是','前面是否为一个‘)’,若是,则不需要将当前节点压入队列,同样,也是因为压入过了;

#include<iostream>
#include<string>
#include<stack>
#include<queue>
using namespace std;
stack<int> fstack;
queue<int> Q;
char s[1000010];
struct name
{
    char str[11];
}na[50001];
int main()
{
    int cas,n,num;
    char str1[11];
    scanf("%d",&cas);
    while(cas--)
    {
        while(!fstack.empty())
            fstack.pop();
        while(!Q.empty())
            Q.pop();
        scanf("%s",s);
        int len=strlen(s);
        num=0;
        int j=0;
        for(int i=0;i<len;i++)
        {
            if(s[i]>='a'&&s[i]<='z')
                str1[j++]=s[i];
            else
            {
                if(j!=0)
                {
                    str1[j]='\0';
                    j=0;
                    strcpy(na[++num].str,str1);
                }
                if(s[i]=='(')
                {
                    fstack.push(num);
                        Q.push(num);
                }
                else if(s[i]==',')
                {
                      
                    if(s[i-1]!=')')
                        Q.push(num);
                    Q.push(fstack.top());
                }
                else {
                    if(s[i-1]!=')')
                        Q.push(num);
                    Q.push(fstack.top());
                    fstack.pop();
                }
            }
        }
        if(num==0)
        {
            str1[j]='\0';
            printf("1\n%s\n\n",str1);
            continue;
        }
        printf("%d\n",num);
        for(int i=1;i<=num;i++)
            printf("%s\n",na[i].str);
        while(!Q.empty())
        {
            if(Q.front()==1&&Q.size()==1)//所有子节点已经遍历,只剩根节点
                break;
            printf("%d ",Q.front());
            Q.pop();
            printf("%d\n",Q.front());
        }
        puts("");
    }
    return 0;
}

转载于:https://www.cnblogs.com/Mu-Tou/archive/2011/09/21/2184459.html

http://www.jmfq.cn/news/4856473.html

相关文章:

  • 顶做抱枕网站/seo网站优化快速排名软件
  • 怎么在网上做网站/手机网站快速建站
  • 英文外贸网站/世界杯球队最新排名
  • 北京网站建设 奥美通全网营销/深圳媒体网络推广有哪些
  • 网站制作需要注意什么/品牌推广方案模板
  • 武汉市网站/网络平台推广方式
  • 中国建设银行官方网站登录入口/百度开户需要什么条件
  • 企业网站建设与推广/全球网站流量查询
  • 网站各种按钮代码/线上营销模式
  • 如何用rp做网站/sem推广软件哪家好
  • 武汉做网站公司/优化营商环境应当坚持什么原则
  • 阿里巴巴怎样做网站/长春seo公司哪家好
  • 昌大建设土地建设/seo优化论坛
  • 网站seo工作内容/百度seo优化及推广
  • 0资本建设网站/企业网站seo案例
  • 手机网站建设开发报价/上海关键词优化的技巧
  • 用asp做网站的可行性分析/免费google账号注册入口
  • 开发网站建设/厦门网络推广外包
  • 网站注册域名后怎么做/陕西网络推广公司
  • 静态中英文网站怎么做/seo怎么快速提高排名
  • 如何恢复wordpress地址(url)/长春seo优化企业网络跃升
  • 深圳建站服务公司/网络推广公司哪家做得好
  • 淄博网站推广价格/宁波正规站内优化seo
  • 房地产项目网站建设方案/广东公司搜索seo哪家强
  • 做黄漫画网站/seo搜索引擎优化简历
  • 如何填写网站开发验收单/重庆森林为什么叫这个名字
  • 挪车网站开发/域名推荐
  • 网站网页和网址的关系/百度开户多少钱
  • 新品发布会主持稿范文/seo是什么意思为什么要做seo
  • 教怎么做糕点网站/seo推广优化的方法