For else语法最直观的理解
来源:互联网 发布:源码论坛eenot 编辑:程序博客网 时间:2024/05/17 09:15
看到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 two for c in range(2,n+1): # Others to check if G[u][v]: u = c # u knows v? Replace u else: v = c # Otherwise, replace v if u == n: c = v # u was replaced last; use v else: c = u # Otherwise, u is a candidate for v in range(n): # For everyone else... if c == v: continue # Same person? Skip. if G[c][v]: break # Candidate knows other if not G[v][c]: break # Other doesn't know candidate else: return c # No breaks? Celebrity! MARK~~~~~~~~~~~~~~~~~~~~ return None # Couldn't find anyone
阅读全文
0 0
- For else语法最直观的理解
- Python的for…else和while…else语法
- ThreadLocal的直观浅显理解
- 后缀自动机的直观理解
- 信息熵的直观理解
- 直观理解线性代数的概念
- 信息熵的直观理解
- 矩阵乘法的直观理解
- 对矩阵的直观理解
- handler.post方法的终极最直观的理解与解释
- handler.post方法的终极最直观的理解与解释
- #for---else的应用
- 关于悲观锁和乐观锁的区别(最直观理解)
- python 基本语法 if else for
- pitch yaw roll 最直观的解释
- pitch yaw roll 最直观的解释
- 最直观的方式学习flexbox属性
- 归并排序最直观的示意图
- bootstrap定义的标签
- node 第一记
- Java接入微信支付
- MyBatis-- maven自动生成映射文件及classPathEntry 路径修改
- PHP防止盗链的方法
- For else语法最直观的理解
- 查一波排序算法
- soj:3300_背包装满(完全背包)
- POJ 3320 Jessica's Reading Problem
- windows下redis的安装
- WINDOWS -Eclipse 配置PyDev
- 二叉树按层遍历并按层打印和蛇形打印
- 一次SSH免密登陆的问题
- Cannot interpret feed_dict key as Tensor: Can not convert a method into a Tensor.