if(a&b | c)如何在Python中执行?

2024-05-19 00:44:03 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是解决名人问题的方法

问题是:假设你在一个有n个人的聚会上(标签从0到n-1),其中可能有一个名人。名人的定义是其他n-1个人都认识他/她,但他/她一个都不认识

现在你要找出名人是谁或者确认没有名人。你唯一可以做的就是问这样的问题:“嗨,A。你认识B吗?“来获取A是否认识B的信息。你需要通过问尽可能少的问题(在渐进的意义上)来找出名人(或者确认没有名人)

def knows(a,b): //Function that returns 1 if a knows b else returns 0

people = [[0,0,0,0],[1,0,1,0],[1,0,0,0],[1,0,0,0]]
for i in range(0,4):
        for j in range(0,4):
            if(people[a][b]==1):
                return 1
            else:
                return 0


 a = 0
 c=0
 for b in range(1,4):
        if(knows(a,b)):
             c=b

 for i in range(0,4):
        if((i!=c) & (knows(i,c)) | (knows(c,i))!=1): //1
               print c

我想知道//1是如何执行的。在上面的例子中,0是名人。因此c=0。所以在第二次迭代中:

i = 1
c = 0
i!=c //Since 1!=0, its true so we get 1
knows(1,0) //1 knows 0 hence return value : 1
knows(0,1) //0 doesn't know 1 hence return value : 0

因此//1将是:

if (1 & 1 | 1):
    print c 

这里c应该被打印出来,但是它没有被打印出来,它进入下一个迭代


Tags: 方法inforreturnifvaluerangepeople

热门问题