Difference between revisions of "TADM2E 8.13"
From Algorithm Wiki
(An O(nmk) algorithm .) |
|||
| Line 1: | Line 1: | ||
| − | a=raw_input() # the input string | + | a=raw_input() # the input string |
| − | m=raw_input().split(" ") # the set of tokens separated by space | + | m=raw_input().split(" ") # the set of tokens separated by space |
| − | n=len(m) | + | n=len(m) |
| − | k=int(raw_input()) # the maximum length of the token | + | k=int(raw_input()) # the maximum length of the token |
| − | l=[9999999999]*(len(a)+1) | + | l=[9999999999]*(len(a)+1) |
| − | l[0]=0 | + | l[0]=0 |
| − | for i in range(1,len(a)+1): | + | for i in range(1,len(a)+1): |
| − | + | while(lm<i): | |
| − | + | cost = 99999 | |
| − | + | if a[lm:i] in m: | |
| − | + | cost=l[lm]+1 | |
| − | + | if cost < l[i] : | |
| − | + | l[i] = cost | |
| − | + | lm=lm+1 | |
| − | + | print l[-1] | |
| − | |||
| − | |||
| − | |||
| − | print l[-1] | ||
Python Based implementation | Python Based implementation | ||
Revision as of 01:29, 16 November 2015
a=raw_input() # the input string
m=raw_input().split(" ") # the set of tokens separated by space
n=len(m)
k=int(raw_input()) # the maximum length of the token
l=[9999999999]*(len(a)+1)
l[0]=0
for i in range(1,len(a)+1):
while(lm<i):
cost = 99999
if a[lm:i] in m:
cost=l[lm]+1
if cost < l[i] :
l[i] = cost
lm=lm+1
print l[-1]
Python Based implementation