芯片测试

描述

每个芯片都能用来测试其他芯片。已知好芯片比坏芯片多用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。i=j时一律为1(并不表示该芯片对本身的测试结果。芯片不能对本身进行测试)。按从小到大的顺序输出所有好芯片的编号

样例

样例输入

3
1 0 1
0 1 0
1 0 1

样例输出

1 3

思路

11 12 13
21 22 23
31 32 33
如图3个芯片中一定存在好芯片,且好芯片≥2,那么如果1和3是好芯片,那么测试时第一行和第三行的数据一定相同,也就是说无论是好芯片1还是好芯片2,去测试1、2、3时,结果都是一样的。芯片1、2、3的真假都是定了的,随便用一个真芯片测试,结果都是一样的。所以当某些行数据一样并且总行数>=n/2,那么这些行中的坐标第一个数字就是真芯片

代码

n=int(input())
arr=[]

for i in range(n):
    lis=list(map(int,input().split()))
    arr.extend([lis])

for i in range(n):
    if arr.count(arr[i])>n/2:  #count统计arr中和zrr[i]一样的总行数
        true=[(j+1) for j in range(n) if arr[i]==arr[j]]  #如果是,则把真芯片标号提取出来
        break
print(' '.join([str(i) for i in true]))


原文地址:https://www.cnblogs.com/thgpddl/p/12462099.html