資料結構實驗之串三 KMP應用

2021-09-25 17:13:44 字數 1052 閱讀 3559

problem description

有n個小朋友,每個小朋友手裡有一些糖塊,現在這些小朋友排成一排,編號是由1到n。現在給出m個數,能不能唯一的確定一對值l和r(l <= r),使得這m個數剛好是第l個小朋友到第r個小朋友手裡的糖塊數?

input

首先輸入乙個整數n,代表有n個小朋友。下一行輸入n個數,分別代表每個小朋友手裡糖的數量。

之後再輸入乙個整數m,代表下面有m個數。下一行輸入這m個數。

output

如果能唯一的確定一對l,r的值,那麼輸出這兩個值,否則輸出-1

sample input

51 2 3 4 5

32 3 4

sample output

2 4

#include

#include

#include

#define n 1000005

int next[n]

, a[n]

, s[n]

;void

get_next

(int

*s,int n)

else

j = next[j];}

}int

kmp(

int n,

int m,

int ii,

int jj)

else

j = next[j];}

if(j >= m)

return i - m +1;

else

return-1

;}intmain()

scanf

("%d"

,&m)

;for

(i =

0; i < m; i++

)get_next

(s, m)

;int c =

kmp(n, m,0,

0);if

(c !=-1

)else

printf

("-1\n");

}return0;

}

資料結構實驗之串三 KMP應用

time limit 1000ms memory limit 65536k 有疑問?點這裡 有n個小朋友,每個小朋友手裡有一些糖塊,現在這些小朋友排成一排,編號是由1到n。現在給出m個數,能不能唯一的確定一對值l和r l r 使得這m個數剛好是第l個小朋友到第r個小朋友手裡的糖塊數?首先輸入乙個整數...

資料結構實驗之串三 KMP應用

time limit 1000ms memory limit 65536k 有n個小朋友,每個小朋友手裡有一些糖塊,現在這些小朋友排成一排,編號是由1到n。現在給出m個數,能不能唯一的確定一對值l和r l r 使得這m個數剛好是第l個小朋友到第r個小朋友手裡的糖塊數?首先輸入乙個整數n,代表有n個小...

資料結構實驗之串三 KMP應用

time limit 1000ms memory limit 65536k 有n個小朋友,每個小朋友手裡有一些糖塊,現在這些小朋友排成一排,編號是由1到n。現在給出m個數,能不能唯一的確定一對值l和r l r 使得這m個數剛好是第l個小朋友到第r個小朋友手裡的糖塊數?首先輸入乙個整數n,代表有n個小...