蓝桥python—— 方格填数【2016 第六题】
发布日期:2021-06-28 22:05:39 浏览次数:2 分类:技术文章

本文共 1634 字,大约阅读时间需要 5 分钟。

蓝桥python—— 方格填数【2016 第六题】

【题目描述】

如下的 10 个格子

题目

填入 0~9 的数字。要求:连续的两个数字不能相邻。 (左右、上下、对角都算相邻), 一共有多少种可能的填数方案?
请填写表示方案数目的整数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

和大家说下我的思路吧。我反正能不动脑子,能暴力就暴力破解!

脑子将每个框框编号,按照数组的下标从0-9。随后生成0-9的所有全排列按顺序放置在框框中,最后即判断是否可行!

判断的话因为只有是个框框,那就一个框框判断他的周围是否有相邻数字的,若全部都没有,则count加1

##方格填数import itertoolsa=[i for i in range(10)]x=list(itertools.permutations(a,10))count=0for i in x:    flag=False    if abs(i[0]-i[4])==1 or abs(i[0]-i[3])==1 or abs(i[0]-i[5])==1 or abs(i[0]-i[1])==1:        flag=True    if abs(i[1]-i[0])==1 or abs(i[1]-i[2])==1 or abs(i[1]-i[5])==1 or abs(i[1]-i[4])==1 or abs(i[1]-i[6])==1 :        flag=True    if abs(i[2]-i[1])==1 or abs(i[5]-i[2])==1 or abs(i[2]-i[6])==1 :        flag=True    if abs(i[3]-i[0])==1 or abs(i[3]-i[4])==1 or abs(i[3]-i[8])==1 or abs(i[3]-i[7])==1 :        flag=True    if abs(i[4]-i[0])==1 or abs(i[4]-i[3])==1 or abs(i[4]-i[7])==1 or abs(i[8]-i[4])==1 or abs(i[4]-i[9])==1 or abs(i[5]-i[4])==1 or abs(i[4]-i[1])==1:        flag=True    if abs(i[5]-i[1])==1 or abs(i[5]-i[0])==1 or abs(i[5]-i[4])==1 or abs(i[5]-i[8])==1 or abs(i[5]-i[9])==1 or abs(i[5]-i[6])==1 or abs(i[5]-i[2])==1 :        flag=True    if abs(i[6]-i[2])==1 or abs(i[6]-i[1])==1 or abs(i[6]-i[5])==1 or abs(i[6]-i[9])==1  :        flag=True    if abs(i[7]-i[3])==1 or abs(i[7]-i[4])==1 or abs(i[7]-i[8])==1 :        flag=True    if abs(i[8]-i[3])==1 or abs(i[8]-i[4])==1 or abs(i[8]-i[5])==1 or abs(i[8]-i[7])==1 or abs(i[8]-i[9])==1 :        flag=True    if abs(i[9]-i[8])==1 or abs(i[9]-i[4])==1 or abs(i[9]-i[5])==1 or abs(i[9]-i[6])==1:        flag=True    if not flag:        count+=1print(count)

答案为1580

转载地址:https://blog.csdn.net/yfuyu/article/details/109540893 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:蓝桥python——牌型种数【2015 第七题】
下一篇:蓝桥python——凑算式【2016 第三题】

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月12日 00时39分23秒