算法创作|纸牌三角形

问题描述A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。下图就是一种排法(如有对齐问题,参看p1.png)。A9 64   837 5 2这样的排法可能会有很多。如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?笨笨有话说:感觉可以暴力破解哦。麻烦的是,对每个排法还要算出它的旋转、镜像排法,看看有没有和历史重复。歪歪有话说:人家又不让你把所有情况都打印出来,只是要算种类数。对于每个基本局面,通过旋转、镜像能造出来的新局面数目不是固定的吗?解决方案通过对于本题,比较重要的一点是对所给数据做一个全排列,如何做到全排列,就要用到itertools,一个用于高效循环的迭代器,但是本题只是涉及一个简单的应用,所以就只是简单的学习该迭代器的一小部分知识,更多的做不到,该题所用到的的是permutations()的使用,该操作会得出所有可能的排序,没有重复的元素。之后是用if条件判断提前做出下标标记的所有数字是否满足等边三角形的相应知识,因为旋转得到情况3种,镜像有2种,所以得出结果后除以6就可以得到最终答案。import itertoolsa = [1, 2, 3, 4, 5, 6, 7, 8, 9]res = 0for i in itertools.permutations(a, 9):#遍历列表a,用itertools得出全排列结果w = list(i)if w[0]+w[1]+w[2]+w[3] == w[3]+w[4]+w[5]+w[6] == w[6]+w[7]+w[8]+w[0]:res += 1print('%d' % (res/6))#iterator 循环器,itertools.permutations就是返回可迭代对象的所有数学全排列方式。结语解决一道蓝桥杯的真题,同时学到了一点新的知识,迭代器的一个方法的使用,虽然题目看似难度不大,还是要有缜密的思维思考方式,今后的会不断加强思维能力,做出更多的题目。主编:欧洋作者:涂瀚鑫、沈志坚、陈东

(0)

相关推荐

  • 【每周一坑】程序猿的浪漫

    最近公众号上的自媒体们炸了,因为苹果爸爸把腾讯爸爸的赞赏给关闭了! 讲真,这对咱们编程教室的影响还是很大的.之前每次发完文章,晚饭还能靠打赏加个鸡腿儿,这下泡汤-- 来看本周的题目. 前几日刷朋友圈时 ...

  • 面试题-有1、2、3、4数字能组成多少互不相同无重复数的三位数?

    前言 有1.2.3.4数字能组成多少互不相同无重复数的三位数? 普通写法 这一题很多小伙伴能想到的最直接的方法是嵌套三个for循环,然后判断3个数字不相等,得到组合的情况 s = 0 for i in ...

  • 【Python基础】Python中的高效迭代库itertools,排列组合随便求

    本文目录 一.模块概述 二.组合生成器 2.1 product 2.2 permutations 2.3 combinations 2.4 combinations_with_replacement ...

  • 用迭代器模块为Python提速

    Python官方文档用'高效的循环'来形容itertools模块,有些tools会带来性能提升,而另外一些tools并不快,只是会节省一些开发时间而已,如果滥用还会导致代码可读性变差.我们不妨把ite ...

  • 第一次把 Python 的切片理解得如此透彻

    来源:Python猫 作者:豌豆花下猫 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组-)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice) ...

  • 算法创作|神奇语言问题解决方法

    问题描述一位同学正在学习一门神奇的语言,其中的单词都是由小写英文字母组成,有些单词很长,而这位同学一直记不住,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现的最多来分辨单词,现在请帮助这位同学 ...

  • 算法创作|规则数列计算解决方法

    问题描述如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵.1 2 6 7 15 -3 5 8 14 -4 9 13 -10 12 -11 --(1)容易看出矩阵第二行 ...

  • 算法创作|阶梯电价问题解决方法

    问题描述为了提倡居民节约用电,某省电力公司执行"阶梯电价",安装一户一表的居民用户电价分为两个"阶梯":月用电量50千瓦时(含50千瓦时)以内的,电价为0.53 ...

  • 算法创作 | 0到n-1中缺失的数字问题解决方法

    问题描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字.示例1:输入:[0,1,3 ...

  • 算法创作|找出游戏的获胜者问题解决方法

    问题描述共有 n 名小伙伴一起做游戏.小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号.确切地说,从第 i 名小伙伴顺时针移动一位会到达第 (i+1) 名小伙伴的位置,其中 1 <= i ...

  • 算法创作 | 二叉树遍历问题解决方法

    问题描述二叉树的先序遍历.中序遍历.后序遍历怎么求?解决方案给你一个二叉树(如图)那么怎么找出它的先序遍历.中序遍历.后序遍历呢?我们先看一个简单二叉树来了解它的概念. 所谓前序,中序,后序就是指根所 ...

  • 算法创作|烂头背枪双人情况游戏随机模拟

    问题描述对于烂头背枪这个游戏,相信00后的同学并不陌生,这是幼时的回忆,这个游戏本身,有烂头,枪,虎,人,鸡,蜂总共六种角色,每种四个.对应规则为烂头背枪,枪打虎,虎吃人,人养鸡,鸡啄蜂,蜂叮烂头,前 ...

  • 算法创作|“画雪人”问题解决方法

    问题描述示例:运用Turtle画出一个戴帽子的雪人在你门前,我堆起一个雪人,代表笨拙的我,把你久等...解决方案掌握turtle库,you can do you want.代码清单 1 DFS求解1到 ...

  • 算法创作|打家劫舍

    问题描述在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根".除了"根"之外,每栋房子有且只有一个&q ...