trie树

// poj4 3630 Phone List
// 题意: 给一组互不相同的号码,问其中是否有号码是另一号码的前缀

#include <iostream> // trie树
using namespace std ;
struct Node
{
Node *next[10]; //数字0-9
int vis; //记录该节点所代表的号码是否有被访问过
}table[100000];
Node *root;
int cur;
void init()
{
//trie树的根结点不包含字符信息
root=&table[0];
for(int i=0;i<10;++i)
root->next[i]=NULL;
cur=1;
}
int prefix(char ch[]) //若出现前缀情况则返回 1
{
Node* p=root;
int tag=1; //假定存在前缀
for(int i=0;ch[i];++i)
{
int j=ch[i]-'0';
if(p->next[j]==NULL) //说明不可能存在前缀
{
tag=0;
Node* q=&table[cur++];
for(int k=0;k<10;++k)
q->next[k]=NULL;
q->vis=0;
p->next[j]=q;
}
p=p->next[j]; //继续搜索下去
if(p->vis) //说明存在前缀
return 1;
}
p->vis=1;
return tag;
}
int main()
{
int cases,n;
cin>>cases;
while(cases--)
{
init();
int suc=1;
char ch[11];
cin>>n;
while(n--)
{
scanf("%s",ch);
if( suc && prefix(ch) )
suc=0;
}
if(suc)
printf("YES\n");
else
printf("NO\n");
}
return 0 ;
}


// poj4 3630 Phone List
#include <iostream> // trie树
using namespace std ;
struct Node
{
int next[10]; //替换掉上面的Node *next[10];
int vis; //记录该节点所代表的号码是否有被访问过
}table[100000];
int cur;
void init()
{
memset(table[0].next,-1,sizeof(table[0].next));
cur=1;
}
int prefix(char ch[]) //若出现前缀情况则返回 1
{
Node* p=&table[0]; //table[0]作为根节点
int tag=1; //假定存在前缀
for(int i=0;ch[i];++i)
{
int j=ch[i]-'0';
if(p->next[j]==-1) //说明不可能存在前缀
{
tag=0;
p->next[j]=cur++;
Node* q=&table[p->next[j]];
for(int k=0;k<10;++k)
q->next[k]=-1;
q->vis=0;
}
p=&table[p->next[j]]; //继续搜索下去
if(p->vis) //说明存在前缀
return 1;
}
p->vis=1;
return tag;
}
int main()
{
int cases,n;
cin>>cases;
while(cases--)
{
init();
int suc=1;
char ch[11];
cin>>n;
while(n--)
{
scanf("%s",ch);
if( suc && prefix(ch) )
suc=0;
}
if(suc)
printf("YES\n");
else
printf("NO\n");
}
return 0 ;
}

转载于:https://www.cnblogs.com/mjc467621163/archive/2011/08/24/2152169.html

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值