写了两个小时终于做出来了,呜呜呜呜,是我太菜

题目描述

如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形。

历史上,人们花了很久才找到了若干完美正方形。比如:如下边长的 22 个正方形 2 3 4 6 7 8 12 13 14 15 16 17 18 21 22 23 24 26 27 28 50 60。

如下图那样组合,就是一种解法。

此时,紧贴上边沿的是:60 50,紧贴下边沿的是:26\ 28\ 17\ 21\ 1826 28 17 21 18。

22 阶完美正方形一共有 88 种。下面的组合是另一种:2 5 9 11 16 17 19 21 22 24 26 30 31 33 35 36 41 46 47 50 52 61。

如果告诉你该方案紧贴着上边沿的是从左到右依次为:47 46 61,你能计算出紧贴着下边沿的是哪几个正方形吗?

思路

刚拿到题就很懵啊,虽然知道肯定是DFS,可是竟然有点无从下手。后来在看到一些大佬的思路后,我确定了一种我能理解并容易实现的思路。

我们都玩过俄罗斯方块(没玩过当我没说),我们在选择一块方块的位置时都是选择尽量往底处放置

那么我们可以创建一个154X154的二维数组,通过0和1确定当前位置是否已被占用,然后每次从最底处开始下一层的搜索。放置方块前要判断当前位置是否放得下,最后确定一个递归出口,当所有方块用完时结束,如果结束时二维数组中的元素全是1,那么就是正确答案了

代码(写的比较乱,我还不是特别熟练)

import os
import sys# 请在此输入您的代码
map=[[0 for i in range(154)]for j in range(154)]
for i in range(47):for j in range(47):map[i][j]=1
for i in range(46):for j in range(47,93):map[i][j]=1
for i in range(61):for j in range(93,154):map[i][j]=1
square_nums=0
nums=[2,5,9,11,16,17,19,21,22,24,26,30,31,33,35,36,41,50,52]
numbers=[]
#获取最低处起始地点
def con():global mapa=0b=0for i in range(len(map)):t=Truefor j in range(len(map[i])):if map[i][j]==0:a=ib=jt=Falsebreakif not t:breakreturn a,bdef tian(a,b):global map,nums,square_numsfor i in range(len(nums)):if a+nums[i]<=154 and b+nums[i]<=154:for m in range(a,a+nums[i]):for n in range(b,b+nums[i]):if map[m][n]==1:return 0for m in range(a,a+nums[i]):for n in range(b,b+nums[i]):map[m][n]=1temp=nums[i]numbers.append(nums[i])square_nums+=1temp_nums=square_numsdel nums[i]p,q=con()if p==0 and q==0:print(numbers)number_sum=0d=-1ammm=[]while number_sum<154:number_sum+=numbers[d]ammm.insert(0,numbers[d])if 154-number_sum in numbers:ammm.insert(0,154-number_sum)breakd-=1print(ammm)elif square_nums==20:returntian(p,q)del numbers[temp_nums-1]square_nums-=1nums.append(temp)nums.sort()for m in range(a,a+temp):for n in range(b,b+temp):map[m][n]=0a,b=con()
tian(a,b)

.
有好的思路也可以留在评论区哦,编码不易,有帮助的话点个赞支持一下吧~~~

完美正方形---蓝桥杯练习相关推荐

  1. c语言将矩形分成多个小正方形,蓝桥杯练习算法题(矩形切割成正方形)

    书山有路勤为径,学海无涯苦作舟 点赞再看,养成习惯 目录 1.前言 2.题目 3.代码 3.前言: 最近在准备即将到来的蓝桥杯比赛,拼命刷题,锻炼解题的算法,俗话说熟能生巧,现在的是去做大量的题目,来 ...

  2. 关于2018年第九届蓝桥杯省赛(江苏赛区)

    为啥到现在才写呢...就是懒,是真的懒.题也没刷几个 (下面题目的超链接转自这里,并不是本人解法..只是因为有题目还有题解) 4.1举行的蓝桥杯也可以说是"愚人杯"了 早早的跟同学 ...

  3. 蓝桥杯——完美正方形(dfs)

    完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. 历史上,人们花了很久才找到了若干完美正方形.比如:如下边长的22个正方形 2 3 4 6 7 8 12 1 ...

  4. ( 题解 )第六届蓝桥杯决赛试题 -- 完美正方形 (线段树 + 深搜)

    题目 : 完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. 历史上,人们花了很久才找到了若干完美正方形.比如:如下边长的22个正方形 2 3 4 6 7 8 ...

  5. 完美正方形(蓝桥杯)

    问题描述 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. 历史上,人们花了很久才找到了若干完美正方形. 比如:如下边长的 22 个正方形:2 3 4 6 7 8 12 ...

  6. c语言程序设计正方体,2015年第六届蓝桥杯C/C++程序设计本科B组决赛 完美正方形...

    完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形.历史上,人们花了很久才找到了若干完美正方形.比如:如下边长的22个正方形 2 3 4 6 7 8 12 13 ...

  7. 蓝桥杯练习算法题(矩形切割成正方形)

    书山有路勤为径,学海无涯苦作舟 点赞再看,养成习惯 目录 1.前言 2.题目 3.代码 3.前言: 最近在准备即将到来的蓝桥杯比赛,拼命刷题,锻炼解题的算法,俗话说熟能生巧,现在的是去做大量的题目,来 ...

  8. 蓝桥杯,我劝你不要参加的8个完美理由

    蓝桥杯,是一个全国高校的IT技术比拼,如果你参加了,可能不止是刷题数量的剧增,还有你的软件人生 我劝你不要参加,因为如果你参加了,可能会有以下烦恼: 目录 1.会让你变得上进 2.会提前感受码农熬夜的 ...

  9. 【完美解析】蓝桥杯 省赛 杨辉三角形 python组 找规律+二分查找+组合数

    题目 看到最后如果还不懂你来打我~ 分析 我们看到杨辉三角形很容易想到一个数的值等于它肩膀两个数的和.为此,可以不断通过前一行的数求出后一行的数,重复上面操作,直到找到目标为止.但是看了用例规模后发现 ...

最新文章

  1. python不能创建新变量_Python之变量的创建过程!
  2. linux磁盘满时,如何定位并删除文件
  3. pytorch 驱动不兼容_解决Pytorch 加载训练好的模型 遇到的error问题
  4. COM编程之二 接口
  5. KafkaConsumer源码解析
  6. LINUX 游戏服务器之旅4_mongodb环境
  7. python缓存memoryerror_Python安装会抛出大量MemoryError()的
  8. 计算机网络(第七版)谢希仁编著 前五章课后答案计算题详解
  9. Java开发工程师项目经验以及个人介绍实例
  10. AI智能语音客服机器人系统/方案/案列/技术/项目
  11. 薪酬体系:了解越多,满意越高
  12. 谢辉吉林大学计算机学院,【大科·数院】佳绩频传,成果丰硕——第12届中国大学生计算机设计大赛吉大赛区数院学子成绩斐然...
  13. 计算机教案画圆形和方形,小学信息《画方形和圆形》教学设计
  14. 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll。尝试重新安装该程序以解决此问题。
  15. Kafka:合理设置分区数
  16. Apache启用GZIP压缩网页传输
  17. Golang指南:顶级Golang框架、IDE和工具列表
  18. R语言 数据正态化+标准化
  19. 【BZOJ】3698:XWW的难题-上下界网络流
  20. 用C语言计算水分子的个数

热门文章

  1. 商业银行金融IC卡国密改造安全建设方案
  2. 用python七巧板模型拼图形_python之“七巧板”
  3. O2OA开源办公平台:搭建自定义工程及开发
  4. Python最简单的图形编程
  5. 草柴返利APP:淘宝天猫满减店铺优惠券领取入口怎么免费领淘宝天猫粉丝福利购大额内部隐藏优惠券?
  6. 如何预估系统QPS?
  7. 24/09/2022 c语言细节
  8. nodename nor servname provided的解决
  9. 场景化AI数据推动智慧家居发展
  10. 高质量=高成本?优思学院告诉你并非必然!