Eliminate Witches!

简介:
复制代码
/*
sample input
3
walpurgis(charlotte(patricia,gertrud),elly,gisela)
wuzetian
nanoha(fate(hayate))
*/
/*
DFS
把树的字符串
1
a(b(c,d),e,f)
进行深度优先搜索
当前房间编号i
遇到'('则i-》i+1
遇到','则i-》pre_i   pre_i-》i+1
遇到')'则i-》pre_i   如果pre_i!=1 pre_i-》pre_i' pre_i'-》pre_i+1
 */
#include <stdio.h>
#include <string.h>

int T;//T<=20
char str[1000002];//Madoka's log <=1000000chars
char Witches[50001][11];//at most 50000 rooms
int sum_witches,str_i,str_len,name_i,cur_i;//当前结点编号
int pre_i[50001];//父结点编号
int pass[100002][2];//路线
int pass_i;
int main()
{
    char ch;
    int t,i;
    scanf("%d",&T);
    while (T--)
    {
        memset(pass,0,sizeof(pass));    
        pass_i=0;
        memset(Witches,0,sizeof(Witches));
        sum_witches=1;
        name_i=0;
        memset(pre_i,0,sizeof(pre_i));
        cur_i=1;
        pre_i[cur_i]=-1;
        memset(str,0,sizeof(str));        
        str_i=0;
        scanf("%s",str);
        str_len=strlen(str);        
        while (str_i<str_len)
        {
            ch=str[str_i++];
            switch(ch)
            {
            case '(':
                sum_witches++;
                name_i=0;
                pre_i[sum_witches]=cur_i;
                pass[pass_i][0]=cur_i;
                pass[pass_i][1]=sum_witches;
                pass_i++;
                cur_i=sum_witches;
                break;
            case ',':
                t = pre_i[cur_i];
                pass[pass_i][0]=cur_i;
                pass[pass_i][1]=t;
                pass_i++;
                cur_i=t;
                sum_witches++;
                name_i=0;
                pre_i[sum_witches]=cur_i;
                pass[pass_i][0]=cur_i;
                pass[pass_i][1]=sum_witches;
                pass_i++;
                cur_i=sum_witches;
                break;
            case ')':
                t=pre_i[cur_i];
                pass[pass_i][0]=cur_i;
                pass[pass_i][1]=t;
                pass_i++;
                cur_i=t;
                break;
            default:
                    Witches[sum_witches][name_i++]=ch;
                    if(str[str_i]>'z' || str[str_i]<'a')
                        Witches[sum_witches][name_i]='\0';
                break;
            }
        }
        printf("%d\n",sum_witches);
        for (i=1;i<sum_witches+1;i++)    printf("%s\n",Witches[i]);
        for (i=0;i<pass_i;i++)    printf("%d %d\n",pass[i][0],pass[i][1]);
        printf("\n");
    }
    return 1;
}
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/04/11/2442144.html,如需转载请自行联系原作者

相关文章
|
程序员 芯片
|
8天前
|
NoSQL Cloud Native Redis
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
阿里云瑶池数据库团队后续将持续参与Valkey社区,如过往在Redis社区一样耕耘,为开源社区作出持续贡献。
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
|
7天前
|
关系型数据库 分布式数据库 数据库
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
PolarDB分布式版助力《香肠派对》实现百亿好友关系20万QPS的毫秒级查询。
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
|
9天前
|
消息中间件 Cloud Native Serverless
RocketMQ 事件驱动:云时代的事件驱动有啥不同?
本文深入探讨了云时代 EDA 的新内涵及它在云时代再次流行的主要驱动力,包括技术驱动力和商业驱动力,随后重点介绍了 RocketMQ 5.0 推出的子产品 EventBridge,并通过几个云时代事件驱动的典型案例,进一步叙述了云时代事件驱动的常见场景和最佳实践。
115100 1
|
10天前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
101871 3
|
6天前
|
物联网 PyTorch 测试技术
手把手教你捏一个自己的Agent
Modelscope AgentFabric是一个基于ModelScope-Agent的交互式智能体应用,用于方便地创建针对各种现实应用量身定制智能体,目前已经在生产级别落地。
|
9天前
|
自然语言处理 Cloud Native Serverless
通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验
近日,通义灵码正式进驻函数计算 FC WebIDE,让使用函数计算产品的开发者在其熟悉的云端集成开发环境中,无需再次登录即可使用通义灵码的智能编程能力,实现开发效率与代码质量的双重提升。
95440 2
|
1天前
|
机器人 Linux API
基于Ollama+AnythingLLM轻松打造本地大模型知识库
Ollama是开源工具,简化了在本地运行大型语言模型(ile优化模型运行,支持GPU使用和热加载。它轻量、易用,可在Mac和Linux上通过Docker快速部署。AnythingLLM是Mintplex Labs的文档聊天机器人,支持多用户、多种文档格式,提供对话和查询模式,内置向量数据库,可高效管理大模型和文档。它也是开源的,能与Ollama结合使用,提供安全、低成本的LLM体验。这两款工具旨在促进本地高效利用和管理LLMs。
32759 18
|
22小时前
|
人工智能 自然语言处理 API
Claude3是什么?
Claude 3最近备受各大媒体瞩目,成为了AI领域备受关注的新宠。在ChatGPT推出更高版本之前,Claude 3已经被公认为是语言类AI工具中的佼佼者,特别在处理逻辑性和长篇上下文方面表现突出。然而,与此同时,Claude 3的注册流程也备受诟病,被认为是所有AI工具中最为复杂的之一。 这篇内容教大家 注册Claude 3 以及升级 教程。
13669 1
Claude3是什么?
|
2天前
|
NoSQL Java Redis
使用Redis实例搭建网上商城的商品相关性分析程序
本教程将指导您如何快速创建实例并搭建网上商城的商品相关性分析程序。(ApsaraDB for Redis)是兼容开源Redis协议标准的数据库服务,基于双机热备架构及集群架构,可满足高吞吐、低延迟及弹性变配等业务需求。
17119 0