hdu-1075-What Are You Talking About-(사전 트리)
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct list
{
int leap;
char str[100];
struct list *next[26];
};
struct list *tree;
struct list *code()
{
int i;
struct list *p;
p=new list();
p->leap=0;
for(i=0;i<26;i++)
{
p->next[i]=NULL;
}
return p;
}
void in(struct list *q,char *str1,char *str2)
{
int n,i,t;
struct list *p;
p=q;
n=strlen(str2);
for(i=0;i<n;i++)
{
t=str2[i]-'a';
if(p->next[t]==NULL)
p->next[t]=code();
p=p->next[t];
}
p->leap=1;
strcpy(p->str,str1);
}
void search(struct list *q,char *str)
{
int n,i,t;
n=strlen(str);
struct list *p;
p=q;
for(i=0;i<n;i++)
{
t=str[i]-'a';
if(p->next[t]==NULL)break;
p=p->next[t];
}
if(p->leap==1&&i==n)
printf("%s",p->str);
else
printf("%s",str);
}
int main()
{
int i,j,n;
char str1[100];
char str2[100];
char str[10000];
tree=code();
while(gets(str1)&&strcmp(str1,"START")!=0);
while(scanf("%s",str1)&&strcmp(str1,"END")!=0)
{
scanf("%s",str2);
in(tree,str1,str2);
}
while(gets(str)&&strcmp(str,"START")!=0);
while(gets(str)&&strcmp(str,"END")!=0)
{
n=strlen(str);
j=0;
for(i=0;i<n;i++)
{
if(!(str[i]>='a'&&str[i]<='z'))
{
str1[j]='\0';
search(tree,str1);
printf("%c",str[i]);
j=0;continue;
}
str1[j]=str[i];
j++;
}
if(j!=0)
{
str1[j]='\0';
search(tree,str1);
}
printf("
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[SwiftUI]List화한 CoreData를 가로 스와이프로 행 삭제하는 방법상당히 조사했지만 일본어 자료가 없었기 때문에 비망록으로 남겨 둔다. 아래와 같이 CoreData를 참조한 리스트를 가로 스와이프로 삭제하고 싶었다. UI 요소뿐만 아니라 원본 데이터 당 삭제합니다. 잘 다른 페이지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.