hdu 2087 KMP裸題 沒有交集的匹配數

2021-07-16 22:53:43 字數 1577 閱讀 1328

匹配串aaaaaa

模板串aa

然後只算出現3次。

這樣的話,只要在find函式修改一行就行了

templatebool find(t text, int lent, t pattern, int lenp, int next, vector&ret)//下標皆為從0開始

} return ret.size();

}

ac code

/*#include #include #include #include using std::tr1::unordered_map;

*/#include #include #include #include #include #include using namespace std;

/*using std::sort;

using std::bitset;

using std::max;

using std::cout;

using std::stack;

using std::cin;

using std::endl;

using std::swap;

using std::pair;

using std::vector;

using std::set;

using std::map;

using std::multiset;

using std::queue;

using std::greater;

using std::string;

using std::priority_queue;

using std::max_element;

using std::min_element;

using __gnu_pbds::pairing_heap_tag;

__gnu_pbds::priority_queue, pairing_heap_tag> heap;

#define hash unordered_map

*/#define pr(x) cout<<#x<<" = "}//text為匹配串,lent為其長度。pattern為模板串,lenp為其長度,next為上面得到的next陣列。

//返回乙個vector,表示所有匹配成功的在text的下標(從0開始)

//還返回乙個true/false表示是否有匹配成功的

templatebool find(t text, int lent, t pattern, int lenp, int next, vector&ret)//下標皆為從0開始

} return ret.size();

}vectorans;

int nxt[1000010];

char pattern[1000010], text[1000010];

void doit()

{ int lenp = strlen(pattern);

int pos = nxt[lenp];

int cir = lenp - pos;

if (cir == lenp) cout<< cir <

剪花布條 hdu 2087(kmp模板題)

一塊花布條,裡面有些圖案,另有一塊直接可用的小飾條,裡面也有一些圖案。對於給定的花布條和小飾條,計算一下能從花布條中盡可能剪出幾塊小飾條來呢?input 輸入中含有一些資料,分別是成對出現的花布條和小飾條,其布條都是用可見ascii字元表示的,可見的ascii字元有多少個,布條的花紋也有多少種花樣。...

剪花布條 HDU 2087 KMP模板題

題意 2個字串a,b.問a中有多少個字串b.input 輸入中含有一些資料,分別是成對出現a,b a和b不會超過1000個字元。如果遇見 字元,則表示測試結束。output 輸出b的個數,每個結果之間應換行。kmp模板題 include include include include include...

Hdu 2087 kmp演算法的運用

description 一塊花布條,裡面有些圖案,另有一塊直接可用的小飾條,裡面也有一些圖案。對於給定的花布條和小飾條,計算一下能從花布條中盡可能剪出幾塊小飾條來呢?input 輸入中含有一些資料,分別是成對出現的花布條和小飾條,其布條都是用可見ascii字元表示的,可見的ascii字元有多少個,布...