解题思路:1.总共8个位置,只要2个圈圈之差等于框框即可,注意倒数第3个数还要和第1"/>

面试宝典_Python.常规算法.0001.在圆圈和框框分别填入1~8数字各一次?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试宝典_Python.常规算法.0001.在圆圈和框框分别填入1~8数字各一次?相关的知识,希望对你有一定的参考价值。

面试题目:

技术分享

解题思路:

1. 总共8个位置,只要2个圈圈之差等于框框即可,注意倒数第3个数还要和第1个数字运算才算结束,所以可以先生成排列组合然后再通过分片偏移来获取符合条件的结果.


具体实现:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2016-12-24 12:19:01
# @Author  : 李满满 ([email protected])
# @Link    : http://xmdevops.blog.51cto.com/
# @Version : $Id$

from __future__ import absolute_import
# 说明: 导入公共模块
import pprint
import itertools
# 说明: 导入其它模块


def calculation(max_num):
    result = []
    combinations = itertools.permutations(
        xrange(1, max_num + 1),
        max_num
    )
    for item in combinations:
        flag = True
        for index in range(0, max_num, 2):
            x = item[index]
            y = item[index + 1]
            z = item[0] if index == max_num - 2 else item[index + 2]
            if abs(z - x) != y:
                flag = False
                break
        if flag:
            result.append(item)

    return result


if __name__ == ‘__main__‘:
    result = calculation(8)
    pprint.pprint(result)


本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1885736

以上是关于面试宝典_Python.常规算法.0001.在圆圈和框框分别填入1~8数字各一次?的主要内容,如果未能解决你的问题,请参考以下文章

《Python程序员面试算法宝典》PDF高清版

好课分享: 685_数据结构与算法面试宝典 百度云

面试宝典_Python.运维开发.0004.用Python实现tail实时输出新增日志?

每日一书 丨 Java程序员面试算法宝典

《PHP程序员面试笔试宝典》——如何回答算法设计问题?

面试宝典 | 冒泡排序详解