描述
每个芯片都能用来测试其他芯片。已知好芯片比坏芯片多。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。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]))