本文主要是介绍For else语法最直观的理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看到python算法简介里面的名人问题。算法的思路网上比较多,大概写一下。这里记录的是一个语法小知识点,因为自己一直用不好,看到了这个用法最简单直观的方法。
问题简介:
在一个房间里有 N 个人,其中一个是名人,大家都认识他,但他不认识任何人。其他人可能认识房间里面的一部分人。
你可以问任何人问题,但是问题只能是:你认识 某人吗,对方回答 Yes or No. 请问最少要问多少个问题才能把名人找出来?
解题:
依次问他是否认识他的下一个,比如 2, 如果 1 说认识,那么 1 一定不是名人,2 有可能是名人; 如果1 说不认识,2 一定不是名人,1 却有可能是名人。依次问下去,直到第 N 个人。我们问 (N - 1) 个问题就可以把名人找出来。
算法的For Else:
def celeb(G):n = len(G)u, v = 0, 1 # The first twofor c in range(2,n+1): # Others to checkif G[u][v]: u = c # u knows v? Replace uelse: v = c # Otherwise, replace vif u == n: c = v # u was replaced last; use velse: c = u # Otherwise, u is a candidatefor v in range(n): # For everyone else...if c == v: continue # Same person? Skip.if G[c][v]: break # Candidate knows otherif not G[v][c]: break # Other doesn't know candidateelse:return c # No breaks? Celebrity! MARK~~~~~~~~~~~~~~~~~~~~return None # Couldn't find anyone
这篇关于For else语法最直观的理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!