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

2021-08-09 12:07:44 字數 1478 閱讀 8042

problem description

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

input

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

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

output

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

example input

5

1 2 3 4 5

32 3 4

example output

2 4

#include #include #include #define maxstrlen 1000005

#define overflow -2

#define error -1

#define ok 1

typedef int celemtype;

typedef int statu;

typedef struct

hstring;

int next[maxstrlen];

int n, m;

int sum = 0;

statu initstring(hstring &t); //初始化串

statu strassign(hstring &t, celemtype str); //輸入串

statu strassign2(hstring &t, celemtype str); //輸入串

statu getnext(int s);

statu kmp(hstring t1, hstring t2, int t);

int main()

else

printf("-1\n");

return 0;

}statu initstring(hstring &t) //初始化串

statu strassign(hstring &t, celemtype str) //輸入串

return ok;

}statu strassign2(hstring &t, celemtype str) //輸入串

return ok;

}statu getnext(int s)

else

j = next[j];

}return ok;

}statu kmp(hstring t1, hstring t2, int t)

else

j = next[j];

}if(j >= t2.length)

return i - m + 1;

else

return error;

}

資料結構實驗之串三 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個小...