剪花布條(kmp基礎變形)
題目描述
一塊花布條,裡面有些圖案,另有一塊直接可用的小飾條,裡面也有一些圖案。對於給定的花布條和小飾條,計算一下能從花布條中儘可能剪出幾塊小飾條來呢?
輸入
輸入中含有一些資料,分別是成對出現的花布條和小飾條,其布條都是用可見ASCII字元表示的,可見的ASCII字元有多少個,布條的花紋也有多少種花樣。花紋條和小飾條不會超過1000個字元長。如果遇見#字元,則不再進行工作。
輸出
輸出能從花紋布中剪出的最多小飾條個數,如果一塊都沒有,那就老老實實輸出0,每個結果之間應換行。
樣例輸入
abcde a3
aaaaaa aa
#
樣例輸出
0
3
AC碼:
/*KMP演算法*/
#include<stdio.h>
#include<string.h>
const int maxn=1005;
int m,n,nxt[maxn];
char s[maxn],t[maxn];//s[]為模式串,t[]為匹配串
void getnext()
{
nxt[0]=0;
for(int i=1;i<n;i++)
{
int j=nxt[i-1];
while(t[j]!=t[i]&&j>0)
{
j=nxt[j-1];
}
if(t[j]==t[i])
nxt[i]=j+1;
else nxt[i]=0;
}
}
int kmp()
{
int j=0;
int ans=0;
for(int i=0;i<m;i++)
{
while(t[j]!=s[i]&&j>0)
j=nxt[j-1];
if(t[j]==s[i]) j++;
if(j>=n)
{
ans++;
j=0;
}
}
return ans;
}
int main()
{
while(~scanf("%s",s))
{
if(s[0]=='#')
break;
scanf("%s",t);
m=strlen(s);
n=strlen(t);
getnext();
printf("%d\n",kmp());
}
return 0;
}
相關文章
- 剪花布條hd 2087
- canvas錐形漸變進度條Canvas
- 杭州短視訊剪輯培訓,零基礎學習找沐林電商學院秒變剪輯大神
- Shader 繪製基礎圖形
- 圖形學基礎知識
- Vue基礎-條件渲染Vue
- python第二階段(15)numpy入門基礎-視覺化之條形圖Python視覺化
- echarts 繪製圓形進度條帶漸變色Echarts
- 【matplotlib基礎】--3D圖形3D
- Python基礎:變數Python變數
- python變數基礎Python變數
- svg和css3建立環形漸變進度條SVGCSSS3
- 0基礎怎麼學習短視訊剪輯,並通過剪輯賺錢?
- Java基礎-基礎語法-變數與常量Java變數
- JavaScript基礎(二)變數JavaScript變數
- python_基礎_變數Python變數
- [java基礎]之變數Java變數
- WPF基礎:在Canvas上繪製圖形Canvas
- Linux基礎命令---顯示樹形程式pstreeLinux
- HyperWorks基於幾何投影的網格變形
- PHP->GO 基礎-變數PHPGo變數
- c++基礎三(變數)C++變數
- Python基礎:條件判斷 & 迴圈Python
- SQL-基礎語法 - 條件分支SQL
- python入門,程式設計基礎概念介紹(變數,條件,函式,迴圈)Python程式設計變數函式
- 字串匹配基礎下——KMP 演算法字串匹配KMP演算法
- vis.js條形圖JS
- Vue 基礎自查——條件渲染和列表渲染Vue
- Js基礎知識(一) – 變數JS變數
- Go基礎系列:常量和變數Go變數
- iOS 繪製漸變·基礎篇iOS
- 【scipy 基礎】--傅立葉變換
- 基礎 變數的作用範圍變數
- python基礎學習_01變數Python變數
- java基礎變數的交換Java變數
- 基礎架構之百變魔方架構
- CSS基礎:CSS變數簡介CSS變數
- Linux基礎之Shell與變數Linux變數