小李买年货
提交数: 519, 通过率: 28.32%, 平均分: 44.03
题目描述:
小李去商店买年货,店里共有n种物品,小李需要购买其中的几种物品各一件。然而商店采用的购买规则比较特殊,只提供m种购买方案,每一种方案是特定的几种物品各一件。本着不浪费不多买的原则,小李思考能否选择其中几种购买方案,使得能够恰好买到所需要的物品。
输入格式:
第一行两个整数m 和 n ,表示商店提供的 m 种购买方案 和 总共 n种商品
接下来m行,每行表示商店的一种规定购买方案。
接下来一行,若干个数,每个数字之间用空格隔开,数字不重复且在 1 到 n 范围内
输出格式:
求解可能的购买方案组合,若存在则输出所有方案组合,一行一种方案,按从小到输出,否则输出NO,表示不存在有效的购买方案组合。
数据范围:
n, m <= 20
样例输入:
7 10 2 6 9 3 8 3 5 6 4 5 8 1 4 7 10 4 5 8 9 2 4 5 6 8 9
样例输出:
1 2 5 1 7
提示:
m , n= map( int, input().split() )
a = [0] * m
b = [0] * m
k=0
def check(x,y):
result = x & y
return ________(1)________
for i in range( m ):
line = input()
a[ i ] = list( map( int, line.split() ) )
xy = list( map( int,input( ).split() ) )
sta=0
for x in xy:
sta = sta + 2**(x-1)
for i in range(m):
for j in _________(2)___________:
b[i] = b[i] + 2**(a[i][j]-1)
flag=False
for i in range(1,2**m):
t=i; zu=0; s= ""; j = 0
while t>0:
if t % 2 == 1:
if check(b[j],zu):break
zu=zu+b[j]
s=s+str(j+1) +" "
t = t//2;j=j+1
if t==0 and ________(3)________:
print(s)
flag=True
if not flag: print("NO")
时间限制: 1000ms空间限制: 256MB