标题:完美正方形

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

历史上,人们花了很久才找到了若干完美正方形。比如:如下边长的22个正方形
2 3 4 6 7 8 12 13 14 15 16 17 18 21 22 23 24 26 27 28 50 60
如【图1.png】那样组合,就是一种解法。此时,
紧贴上边沿的是:60 50
紧贴下边沿的是:26 28 17 21 18

22阶完美正方形一共有8种。下面的组合是另一种:
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,
你能计算出紧贴着下边沿的是哪几个正方形吗?

请提交紧贴着下边沿的正方形的边长,从左到右,用空格分开。

不要填写任何多余的内容或说明文字。

50 33 30 41

#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int N,vis[60];
int d[]={2,5,9,11,16,17,19,21,22,24,26,30,31,33,35,36,41,50,52,46,47,61};
int G[155][155];bool inside(int x,int y,int n)
{if(!(x+n<=155&&y+n<=155)) return false;for(int i=x;i<n+x;i++)for(int j=y;j<n+y;j++)if(G[i][j]) return false;return true;
}
void Fill(int x,int y,int n,int m)
{for(int i=x;i<x+n;i++)for(int j=y;j<y+n;j++)G[i][j]=m;
}
void Get(int& x,int& y)
{for(int i=1;i<=154;i++)for(int j=1;j<=154;j++)if(!G[i][j]) {x=i;y=j;return ;}
}
bool solved()
{for(int i=1;i<=154;i++)for(int j=1;j<=154;j++)if(!G[i][j]) return false;return true;
}
bool dfs(int x,int y)
{if(solved()) {return true;}else {Get(x,y);for(int k=0;k<19;k++){if(inside(x,y,d[k])){if(!vis[k]){Fill(x,y,d[k],d[k]);vis[k]=1;if(dfs(x,y+d[k])) return true;Fill(x,y,d[k],0);vis[k]=0;}}else break;}}return false;
}int main()
{int a[30];memset(vis,0,sizeof(vis));memset(G,0,sizeof(G));Fill(1,1,47,47);Fill(1,48,46,46);Fill(1,94,61,61);sort(d,d+19);dfs(1,1);for(int i=1;i<=154;i++)cout<<G[154][i]<<' ';return 0;} 

完美正方形(DFS 暴力搜索)相关推荐

  1. 【NOIP2002】【Luogu1037】产生数(高精乘低精,DFS暴力搜索)

    problem 给定一个整数n和k个变换规则(一位数可变换成另一个一位数) 经过任意次的变换( 0 次或多次),能产生出多少个不同整数 n < 1e30, k <= 15 例: n=234 ...

  2. [HDU 1427]速度计算24点(DFS暴力搜索)

    主题连接:  http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表示当前已经算出的值是sum,括号里算 ...

  3. ZOJ 3300 Mahjong DFS暴力解决。。

    ZJU 3300: 题目描述 就看成1-9的数字,DFS暴力搜索下就过了..... 要求输入13 个数字,声明个数组记录数字的个数,DFS 里各种回溯: #include<stdio.h> ...

  4. “暴力美学1”——DFS深度优先搜索

    作为新时代青年,"暴力"二字似乎离我们十分遥远,大多数时候我们只能够在电影或者电视剧上接触这个概念 暴力二字或许是个贬义词,但若是我们在后面加上美学二字,或许就是一个值得推敲的词汇 ...

  5. 算法模版:暴力搜索之DFS【沈七】

    本文已收录于专栏 ⭐️ <算法通关笔记>⭐️ 算法模版:暴力搜索之DFS 前言 基本概念 算法思想 常用模板 三种枚举方式 指数型枚举 排列型枚举 组合型枚举 完结散花 题目练习 参考文章 ...

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

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

  7. 完美正方形(DFS)

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

  8. 算法第十期——DFS(深度优先搜索)的剪枝优化

    目录 DFS:剪枝 DFS:有哪些剪枝方法 DFS例题一:剪格子 [思路] DFS例题二:路径之谜 [样例分析] DFS例题三:四阶幻方 [思路] [做法一] [做法二] DFS例题三:分考场 [样例 ...

  9. 完美正方形---蓝桥杯练习

    写了两个小时终于做出来了,呜呜呜呜,是我太菜 题目描述 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. 历史上,人们花了很久才找到了若干完美正方形.比如:如下边长的 ...

最新文章

  1. 计算机如何理解我们的语言?NLP is fun!
  2. 纪念计算机之父阿兰·图灵诞辰109周年
  3. SCOM 2012知识分享-26:分布式部署要点总结
  4. c++面试准备之螺旋队列
  5. 在asp.net中实现回车替代Tab键
  6. 小谈Online-game服务器端设计(1、2)
  7. 实现mvcc_MySQL 的多版本并发控制(MVCC) 是干啥的?
  8. Servlet快速入门和工作原理
  9. python如何读取文本_python 如何读取windows-1252格式文本?
  10. 隐藏Jquery dialog 按钮
  11. b站whats app
  12. 清空缓存的命令_布隆过滤器应用——解决Redis缓存穿透问题
  13. 自考总结--数据结构导论
  14. 苹果怎么付费购买内存_苹果怎么清理隐藏内存?手机恢复如初都靠它了
  15. Unity 灯光设置——灯光类型
  16. NAND FLASH 读写操作 简介
  17. 基于边缘检测和透视变换的文档图像校正
  18. 优缺点 快速扫描 硬盘监测_MHDD快速检测硬盘坏道
  19. Jfreechart图表生成方法
  20. 考研二战日记-第六天——高数1.6极限存在准则 两个重要极限

热门文章

  1. 【小波滤波】基于小波变换的噪声信号滤波处理matlab仿真
  2. 深度长文:新iPhoneX凭什么卖这么贵?
  3. PMP考试一定要报班吗?可以自学吗?
  4. CSS学习笔记----CSS3自定义字体图标
  5. 蓝牙键盘连接——输入pin码
  6. 为什么要早点进入软件测试行业?现在加入晚了吗?
  7. Docker基础: Linux内核命名空间之(1) mnt namespace
  8. 计算机专业领域和英语,专业、领域和职业的英语表达法
  9. bzoj 4398 福慧双修 题解
  10. 用python实现新年祝福微信的自动回复