你是一名程序员,请根据下面题目,生成程序:题目描述 糖果店的老板一共有 � M 种口味的糖果出售。为了方便描述,我们将 � M 种口味编号 1 1 ∼ � M。 小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而是 � K 颗一包整包出售。 幸好糖果包装上注明了其中 � K 颗糖果的口味,所以小明可以在买之前就知道每包内的糖果口味。 给定 � N 包糖果,请你计算小明最少买几包,就可以品尝到所有口味的糖果。 输入格式 第一行包含三个整数 � N、 � M 和 � K。 接下来 � N 行每行 � K 这整数 � 1 , � 2 , ⋯ , � � T 1 ,T 2 ,⋯,T K ,代表一包糖果的口味。 输出格式 一个整数表示答案。如果小明无法品尝所有口味,输出 − 1 −1。
时间: 2024-01-18 09:03:17 浏览: 180
搞笑的程序猿:看看你是哪种Python程序员
很高兴为您编写程序,请查看以下代码:
```python
n, m, k = map(int, input().split()) # 读入 n, m, k
s = set(range(1, m+1)) # 初始化一个全集
cnt = [set(map(int, input().split())) for _ in range(n)] # 读入每包糖果的口味
ans = 0 # 初始化答案
while s: # 只要全集不为空
flag = False # 初始化标志
for c in cnt: # 枚举每包糖果
if s.issubset(c): # 如果全集是当前糖果口味的子集
s -= c # 从全集中删除当前糖果口味
ans += 1 # 答案加一
flag = True # 标记为找到了一包糖果
break # 跳出循环
if not flag: # 如果没有找到一包糖果
print(-1) # 输出 -1
break # 结束循环
else: # 如果全集为空
print(ans) # 输出答案
```
希望以上代码可以帮助您解决问题,如果您有其他问题需要问我,请随时提出。
阅读全文