列表

详情


NC25003. [USACO 2008 Ope S]Word Power

描述

Farmer John wants to evaluate the quality of the names of his N (1 <= N <= 1000) cows. Each name is a string with no more than 1000 characters, all of which are non-blank.
He has created a set of M (1 <= M <= 100) 'good' strings (no longer than 30 characters and fully non-blank). If the sequence letters of a cow's name contains the letters of a 'good' string in the correct order as a subsequence (i.e., not necessarily all next to each other), the cow's name gets 1 quality point.
All strings is case-insensitive, i.e., capital letters and lower case letters are considered equivalent. For example, the name 'Bessie' contains the letters of 'Be', 'sI', 'EE', and 'Es' in the correct order, but not 'is' or 'eB'. Help Farmer John determine the number of quality points in each of his cow's names.

输入描述

* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 contains a string that is the name of the ith cow
* Lines N+2..N+M+1: Line N+i+1 contains the ith good string

输出描述

* Lines 1..N+1: Line i+1 contains the number of quality points of the ith name

示例1

输入:

5 3 
Bessie 
Jonathan 
Montgomery 
Alicia 
Angola 
se 
nGo 
Ont 

输出:

1
1
2
0
1

说明:

There are 5 cows, and their names are "Bessie", "Jonathan", "Montgomery", "Alicia", and "Angola". The 3 good strings are "se", "nGo", and "Ont".
"Bessie" contains "se", "Jonathan" contains "Ont", "Montgomery" contains both "nGo" and "Ont", Alicia contains none of the good strings, and "Angola" contains "nGo".

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 2001ms, 内存消耗: 0K, 提交时间: 2023-08-18 17:40:34

n, m = map(int, input().split())
arr = []
for i in range(n+m):
    arr.append(input().upper())

s = arr[n:]
arr = arr[:n]

def issubseq(s, t):
    n, m = len(s), len(t)
    i = j = 0
    while i < n and j < m:
        if s[i] == t[j]:
            i += 1
        j += 1
    return i == n
    

r = [0 for i in range(n)]
for i, cow in enumerate(arr):
    for t in s:
        if issubseq(t, cow):
            r[i] += 1

for c in r:
    print(c)

上一题