#include<stdio.h>
#include<string.h>
#include<limits.h>
int bm_match(const char txt[],const char pat[])
{
int pt;
int pp;
int txt_len=strlen(txt);
int pat_len=strlen(pat);
int skip[UCHAR_MAX+1];
for(pt=0;pt<=UCHAR_MAX;pt++)
{
skip[pt]=pat_len;
}
for(pt=0;pt<pat_len-1;pt++)
{
skip[pat[pt]]=pat_len-pt-1;
}
while (pt<txt_len)
{
pp=pat_len-1;
while(txt[pt]==pat[pp])
{
if(pp==0)
{
return pt;
}
pp--;
pt--;
}
pt+=(skip[txt[pt]]>pat_len-pp)?skip[txt[pt]]:pat_len-pp;
}
return -1;
}
int main(void)
{
int idx;
char s1[256];
char s2[256];
printf("Boyer-Moore\n");
printf("tekisuto\n");
scanf("%s",s1);
printf("pata-nn");
コード
scanf("%s",s2); idx=bm_match(s1,s2); if(idx==-1) { printf("tekisutotyuunipata-nngasonnzaisimasenn\n"); } else { printf("%dmojimenimattisimasu\n",idx+1); } return 0; } pt+=(skip[txt[pt]]>pat_len-pp)?skip[txt[pt]]:pat_len-pp;の意味が分かりません。 C言語 ?で検索してここに言語を入力も出てこなくて・・・(;´Д`)``` コード
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/27 07:25