You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kattis平台Set!问题第8测试用例失败排查求助

解决Kattis平台Set!问题的排障过程

我正在解决Kattis平台上名为Set!的问题,目前代码始终无法通过第8测试用例(仅通过7/31个用例)。作为初学者,我无法找出代码问题所在。我并非寻求代码优化,只希望基于自己编写的代码进行学习,也不要现成方案,且已尝试过AI工具咨询。

初始解决方案

from sys import stdin
ls=[]
ls_output=[]
ls_final=[]
ls_answer=[]
output=''
for i in stdin:
    ls+=i.split()
ls1=dict(list(enumerate(ls,1)))
dc={v:k for k,v in ls1.items()}
ls_values=list(ls1.values())

for i in range(len(ls_values)):
    for j in range(i+1,len(ls_values)):
        for k in range(j+1,len(ls_values)):
               ls_output.append([ls[i],ls[j],ls[k]])

for m in ls_output:
    if all(len(set([m[0][n], m[1][n], m[2][n]])) in [1, 3] for n in range(4))\
    and m[0]!=m[1]!=m[2]!=m[0]:
        ls_final.append(m)

if ls_final:
    for x in ls_final:
        for y in x:
            ls_answer.append(dc[y])
    for z in range(0,len(ls_answer),3):
        output+=f'{ls_answer[z]} {ls_answer[z+1]} {ls_answer[z+2]}\n'
else:
    output+="no sets"
print(output)

第一次修改尝试(仍未通过第8测试用例)

根据建议移除字典以避免重复问题,但依旧无法通过第8测试用例:

from sys import stdin
ls=[]
ls_output=[]
ls_final=[]
ls_answer=[]
output=''
for i in stdin:
    ls+=i.split()
#enumerated ls1 and then unpacked the tuples to form ls2
ls2=[]
ls1=list(enumerate(ls,1))
list(ls2.extend(item) for item in ls1)
##ls1=dict(list(enumerate(ls,1)))
##ls_keys=list(ls1.keys())
##
####dc={v:k for k,v in ls1.items()}
##ls_values=list(ls1.values())

for i in range(len(ls)):
    for j in range(i+1,len(ls)):
        for k in range(j+1,len(ls)):
               ls_output.append([ls[i],ls[j],ls[k]])

for m in ls_output:
    if all(len(set([m[0][n], m[1][n], m[2][n]])) !=2 for n in range(4)):
        ls_final.append(m)

if ls_final:
    for x in ls_final:
        for y in x:
            ls_answer.append(ls2[ls2.index(y)-1])  ##ls2=[1,3SOP,2,2DOP,3,1STP..]
    for z in range(0,len(ls_answer),3):
        output+=f'{ls_answer[z]} {ls_answer[z+1]} {ls_answer[z+2]}\n'
else:
    output+="no sets"
print(output)

最终正确解决方案

保留了原代码的字典部分,移除了易导致索引错误的其他数据结构,现在可通过所有测试用例(感谢@ggorlen):

from sys import stdin
stdin=open('std.txt','r')
ls=[]
ls_final=[]
output=''
for i in stdin:
    ls+=i.split()
ls1=dict(list(enumerate(ls,1)))

for i in range(len(ls)):
    for j in range(i+1,len(ls)):
        for k in range(j+1,len(ls)):
               acc=[]
               acc.append(ls1[i+1])
               acc.append(ls1[j+1])
               acc.append(ls1[k+1])
               if all(len(set([acc[0][n], acc[1][n], acc[2][n]])) !=2 for n in range(4)):
                   ls_final.append([i+1,j+1,k+1])
ls_final=[j for i in ls_final for j in i]

if ls_final:   
    for z in range(0,len(ls_final),3):
        output+=f'{ls_final[z]} {ls_final[z+1]} {ls_final[z+2]}\n'
else:
    output+="no sets"
print(output)

内容的提问来源于stack exchange,提问作者Loki123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:24:58