芯片测试

1.芯片测试

题目描述

​ 有n(2≤n≤20)块芯片,有好有坏,已知①好芯片比坏芯片多。 每个芯片都能用来测试其他芯片。②用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。 给出所有芯片的测试结果,问哪些芯片是好芯片。 输入 输入数据第一行为一个整数n,表示芯片个数。 第二行到第n+1行为n*n的一张表,每行n个数据。表中的每个数据为0或1,在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯片测试第j块芯片时得到的测试结果,1表示好,0表示坏,i=j时一律为1(并不表示该芯片对本身的测试结果。芯片不能对本 身进行测试)。 输出 按从小到大的顺序输出所有好芯片的编号

样例输入

3

1 0 1

0 1 0

1 0 1

样例输出 1 3

分析

  • 题目意思:好的测好的:1;好的测坏的:0;坏的测好的:1或0;坏的测坏的:1或0。总体上好的大于坏的。举个例子,假如我们有100个待测芯片,其中51个好的,49个坏的,我现在拿到一个好的,剩下的50个好的会测出来50个1,49个坏的会随机给出0或者1,最坏的情况给了49个0。可以看出,我们的被测物,只要得到的1不小于一半就可以说明,被测芯片是好的,输出这个芯片的编号即可。

代码

n = int(input())
s=[]
for i in range(n):
    s.append(input().split()) #用append的函数来添加读入
'''二维数组的读入(2):
a = [[]*n]*n   #列表套列表
for i in range(n):
    a[i]=[j for j in input().split()]#对每一行的读入i++
'''
for j in range(n):#列号
    t=0
    for i in range(n):#行号
        if s[i][j]=='1':
            t+=1  #统计数组为元素为1的
        if t>n/2:#比较
            print(j+1,' ',end='')#输出的是行号

python没数组类型,二维数组用列表套列表来存放:[[1,2,1],[4,2,7],[6,9,0]]

结果

posted @ 2021-04-12 21:01  Frommoon  阅读(359)  评论(0编辑  收藏  举报