用python的生成器yield轻松解决8皇后的问题以及斐波拉契数列
2017-10-14 10:41
471 查看
def conflict(state, nextX): nextY = len(state) for i in range(nextY): if abs(state[i] - nextX) in (0, nextY - i): return True return False def queens(num=8, state=()): for pos in range(num): if not conflict(state, pos): if len(state) == num -1: yield (pos, ) else: for result in queens(num, state+(pos,)): yield (pos,) + result print(list(queens(8))) print(len(list(queens(8))))
# 不使用生成器 def fib1(max): res = [] n, a, b = 0, 0, 1 while n < max: res.append(a + b) a, b = b, a + b n += 1 return res # 使用生成器 def fib2(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n += 1 f1 = fib1(5) print(f1) for i in fib2(10): print(i)
相关文章推荐
- 用python的生成器yield轻松解决8皇后的问题以及斐波拉契数列
- python2.6使用mysql包出现的一些问题以及解决办法
- Python安装matplotlib所需要的软件以及问题的解决方法
- [Centos] mod_wsgi 安装流程以及遇到问题解决办法。apxs: command not found 或 Sorry, Python developer package does not appear to be installed.
- Ubuntu下Python的MySQLdb的安装以及常见问题的解决
- ubuntu12.04 安装python3.3.5以及方向键出问题解决方法
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 .
- python数据结构学习笔记-2017-01-08-01-N皇后问题、迷宫问题和跳马问题的递归解决
- Python 爬虫知识汇总 以及40*问题解决策略
- [原创]python MySQLdb在windows环境下的安装、出错问题以及解决办法
- 【安装Python环境】之“安装 setuptools ”时出现的问题以及解决办法
- centos7安装Python3.6以及解决yum不能使用问题
- python2.6使用mysql包出现的一些问题以及解决办法
- 安装python-mysql出现的问题以及解决方法
- Python 解决 8 皇后问题
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法
- Python开源抓取框架简单介绍,以及安装(ubuntu)常见问题解决
- Python: 编程遇到的一些问题以及网上解决办法?
- 使用回溯算法解决N皇后问题以及间隔排列问题