HDOJ 문제 1251 통계 난제(사전 트 리,템 플 릿)
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Submission(s): 18407 Accepted Submission(s): 8105
Problem Description
Ignatius 는 최근 어 려 운 문제 에 부 딪 혔 습 니 다.선생님 께 서 는 그 에 게 많은 단어(소문 자로 만 구성 되 어 있 고 중복 되 는 단어 가 나 오지 않 습 니 다)를 주 셨 습 니 다.지금 선생님 께 서 는 어떤 문자열 을 접두사 로 하 는 단어 수(단어 자체 도 자신의 접두사)를 집계 하 라 고 하 셨 습 니 다.
Input
데 이 터 를 입력 하 는 첫 번 째 부분 은 단어 표 입 니 다.줄 마다 단어 가 있 고 단어의 길 이 는 10 을 넘 지 않 습 니 다.선생님 이 Ignatius 에 게 통계 한 단 어 를 대표 합 니 다.빈 줄 은 단어 표 의 끝 을 대표 합 니 다.두 번 째 부분 은 일련의 질문 입 니 다.줄 마다 질문 이 있 고 모든 질문 은 하나의 문자열 입 니 다.
메모:이 문 제 는 파일 이 끝 날 때 까지 테스트 데이터 만 있 습 니 다.
Output
질문 마다 이 문자열 을 접두사 로 하 는 단어의 수 를 알려 줍 니 다.
Sample Input
banana band bee absolute acm ba b band abc
Sample Output
2 3 1 0
Author
Ignatius.L
Recommend
Ignatius.L | We have carefully selected several similar problems for you: 1075 1247 1671 1298 1800
ac代码
#include
#include
#include
typedef struct s {
struct s *child[30];
int n;
}node,*Node;
Node root;
void insert(char s[])
{
Node current=NULL;
Node newnode=NULL;
int i,len,now;
len=strlen(s);
current=root;
for(i=0;ichild[now]!=NULL)
{
current=current->child[now];
(current->n)++;
}
else
{
//newnode=(struct s *)malloc(sizeof(node));
newnode=(Node)calloc(1,sizeof(node));// calloc
current->child[now]=newnode;
current=newnode;
current->n=1;
}
}
}
int find(char s[])
{
int len=strlen(s),i,j,now;
Node current=NULL;
current=root;
for(i=0;ichild[now]!=NULL)
{
current=current->child[now];
}
else
return 0;
}
return current->n;
}
int main()
{
char s[10000],temp[10000];
//root=(struct s *)malloc(sizeof(node));
root=(Node)calloc(1,sizeof(node));
while(gets(s),strcmp(s,""))
{
insert(s);
}
while(gets(temp))
{
printf("%d
",find(temp));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
poj2630Phone List (정적 트 라이 트 리)이 문 제 는 항 저 우 전기 1671 과 마찬가지 로 - > 자세 한 내용 은 여 기 를 찌 르 세 요 < - 그래서 1671 의 코드 로 한 통 을 제출 했 는데 결국 TLE 가 되 었 습 니 다.과감하게 정적 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.