完美正方形(DFS 暴力搜索)
标题:完美正方形
如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形。
历史上,人们花了很久才找到了若干完美正方形。比如:如下边长的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 暴力搜索)相关推荐
- 【NOIP2002】【Luogu1037】产生数(高精乘低精,DFS暴力搜索)
problem 给定一个整数n和k个变换规则(一位数可变换成另一个一位数) 经过任意次的变换( 0 次或多次),能产生出多少个不同整数 n < 1e30, k <= 15 例: n=234 ...
- [HDU 1427]速度计算24点(DFS暴力搜索)
主题连接: http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表示当前已经算出的值是sum,括号里算 ...
- ZOJ 3300 Mahjong DFS暴力解决。。
ZJU 3300: 题目描述 就看成1-9的数字,DFS暴力搜索下就过了..... 要求输入13 个数字,声明个数组记录数字的个数,DFS 里各种回溯: #include<stdio.h> ...
- “暴力美学1”——DFS深度优先搜索
作为新时代青年,"暴力"二字似乎离我们十分遥远,大多数时候我们只能够在电影或者电视剧上接触这个概念 暴力二字或许是个贬义词,但若是我们在后面加上美学二字,或许就是一个值得推敲的词汇 ...
- 算法模版:暴力搜索之DFS【沈七】
本文已收录于专栏 ⭐️ <算法通关笔记>⭐️ 算法模版:暴力搜索之DFS 前言 基本概念 算法思想 常用模板 三种枚举方式 指数型枚举 排列型枚举 组合型枚举 完结散花 题目练习 参考文章 ...
- 蓝桥杯——完美正方形(dfs)
完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. 历史上,人们花了很久才找到了若干完美正方形.比如:如下边长的22个正方形 2 3 4 6 7 8 12 1 ...
- 完美正方形(DFS)
标题:完美正方形:如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. 历史上,人们花了很久才找到了若干完美正方形. 比如:如下边长的22个正方形 2 3 4 6 7 8 ...
- 算法第十期——DFS(深度优先搜索)的剪枝优化
目录 DFS:剪枝 DFS:有哪些剪枝方法 DFS例题一:剪格子 [思路] DFS例题二:路径之谜 [样例分析] DFS例题三:四阶幻方 [思路] [做法一] [做法二] DFS例题三:分考场 [样例 ...
- 完美正方形---蓝桥杯练习
写了两个小时终于做出来了,呜呜呜呜,是我太菜 题目描述 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. 历史上,人们花了很久才找到了若干完美正方形.比如:如下边长的 ...
最新文章
- 计算机如何理解我们的语言?NLP is fun!
- 纪念计算机之父阿兰·图灵诞辰109周年
- SCOM 2012知识分享-26:分布式部署要点总结
- c++面试准备之螺旋队列
- 在asp.net中实现回车替代Tab键
- 小谈Online-game服务器端设计(1、2)
- 实现mvcc_MySQL 的多版本并发控制(MVCC) 是干啥的?
- Servlet快速入门和工作原理
- python如何读取文本_python 如何读取windows-1252格式文本?
- 隐藏Jquery dialog 按钮
- b站whats app
- 清空缓存的命令_布隆过滤器应用——解决Redis缓存穿透问题
- 自考总结--数据结构导论
- 苹果怎么付费购买内存_苹果怎么清理隐藏内存?手机恢复如初都靠它了
- Unity 灯光设置——灯光类型
- NAND FLASH 读写操作 简介
- 基于边缘检测和透视变换的文档图像校正
- 优缺点 快速扫描 硬盘监测_MHDD快速检测硬盘坏道
- Jfreechart图表生成方法
- 考研二战日记-第六天——高数1.6极限存在准则 两个重要极限