程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C - 剪花布條 HDU2087( kmp找子串,子串不能有重疊 )

C - 剪花布條 HDU2087( kmp找子串,子串不能有重疊 )

編輯:關於C語言

C - 剪花布條 HDU2087( kmp找子串,子串不能有重疊 )



C - 剪花布條
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status

Description
一塊花布條,裡面有些圖案,另有一塊直接可用的小飾條,裡面也有一些圖案。對於給定的花布條和小飾條,計算一下能從花布條中盡可能剪出幾塊小飾條來呢?


Input
輸入中含有一些數據,分別是成對出現的花布條和小飾條,其布條都是用可見ASCII字符表示的,可見的ASCII字符有多少個,布條的花紋也有多少種花樣。花紋條和小飾條不會超過1000個字符長。如果遇見#字符,則不再進行工作。


Output
輸出能從花紋布中剪出的最多小飾條個數,如果一塊都沒有,那就老老實實輸出0,每個結果之間應換行。


Sample Input
abcde a3
aaaaaa aa
#




Sample Output

0

3

 

#include
#include
#include
#include
#include
//#include
using namespace std;
templateinline T read(T&x)
{
    char c;
    while((c=getchar())<=32)if(c==EOF)return 0;
    bool ok=false;
    if(c=='-')ok=true,c=getchar();
    for(x=0; c>32; c=getchar())
        x=x*10+c-'0';
    if(ok)x=-x;
    return 1;
}
template inline T read_(T&x,T&y)
{
    return read(x)&&read(y);
}
template inline T read__(T&x,T&y,T&z)
{
    return read(x)&&read(y)&&read(z);
}
template inline void write(T x)
{
    if(x<0)putchar('-'),x=-x;
    if(x<10)putchar(x+'0');
    else write(x/10),putchar(x%10+'0');
}
templateinline void writeln(T x)
{
    write(x);
    putchar('\n');
}
//-------ZCC IO template------
const int maxn=1000001;
const double inf=999999999;
#define lson (rt<<1),L,M
#define rson (rt<<1|1),M+1,R
#define M ((L+R)>>1)
#define For(i,t,n) for(int i=(t);i<(n);i++)
typedef long long  LL;
typedef double DB;
typedef pair P;
#define bug printf("---\n");
#define mod  1000000007
int next[maxn];
char a[maxn],b[maxn];

void getnext(char*s)
{
    int i=0,j=-1;
    next[0]=-1;
    int len=strlen(s);
    while(i

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved