社区讨论
【警示后人】刚刚遇到的问题
AT_abc268_d [ABC268D] Unique Username参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lxk78ei9
- 此快照首次捕获于
- 2024/06/18 17:25 2 年前
- 此快照最后确认于
- 2024/06/18 20:14 2 年前
我的代码是用 python 写的,没有超时,遇到了两个 wa。
原代码如下
PYTHONimport functools
l = [int(i) for i in input().split(' ')]
n, m=l[0], l[1]
s = []
tot_len = 0
for _ in range(n):
tmp = input()
s.append(tmp)
tot_len += len(tmp)
t = set()
for _ in range(m):
t.add(input())
num_of = 16-tot_len
def f(l, num_of):
if len(l) == 1:
yield l[0]
return
for i in range(len(l)):
s1 = l[i]
l2 = l[:i] + l[i+1:]
for j in range(1, num_of+1):
for s2 in f(l2, num_of-j):
yield s1+"_"*j+s2
return
for i in f(s, num_of):
# print(i)
if i in t:
continue
if len(i) > 16: # 错误在这里
continue
else:
print(i)
exit()
print(-1)
WA 的原因在于,题目要求输出的串 的长度需要大于 ,而我并没有对串的长度下限加以限制。
将代码修改后,通过。
PYTHONimport functools
l = [int(i) for i in input().split(' ')]
n, m=l[0], l[1]
s = []
tot_len = 0
for _ in range(n):
tmp = input()
s.append(tmp)
tot_len += len(tmp)
t = set()
for _ in range(m):
t.add(input())
num_of = 16-tot_len
def f(l, num_of):
if len(l) == 1:
yield l[0]
return
for i in range(len(l)):
s1 = l[i]
l2 = l[:i] + l[i+1:]
for j in range(1, num_of+1):
for s2 in f(l2, num_of-j):
yield s1+"_"*j+s2
return
for i in f(s, num_of):
# print(i)
if i in t:
continue
if 3 <= len(i) <= 16: # 增加条件判定
print(i)
exit()
else:
continue
print(-1)
回复
共 0 条回复,欢迎继续交流。
正在加载回复...