【习题 7-6 UVA - 12113】Overlapping Squares
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
先预处理出来一个正方形。
然后每次枚举新加的正方形左上角的坐标就可以。
注意覆盖的规则,控制一下就可以。
然后暴力判断是否相同。
暴力回溯即可(只用回溯一个正方形区域)
【代码】
/*
1.Shoud it use long long ?
2.Have you ever test several sample(at least therr) yourself?
3.Can you promise that the solution is right? At least,the main ideal
4.use the puts("") or putchar() or printf and such things?
5.init the used array or any value?
6.use error MAX_VALUE?
7.use scanf instead of cin/cout?
8.whatch out the detail input require
*/
/*
一定在这里写完思路再敲代码!!!
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
const int M = 5;
char s[N+5][N+5],now[N+5][N+5];
char square[M+5][M+5];
void init(){
for (int i = 0;i <3;i++)
for (int j = 0;j<5;j++)
square[i][j] = ' ';
for (int i = 0;i < 2;i++) square[i+1][0] = square[i+1][4] = '|';
for (int j = 1;j < 5;j+=2) square[0][j]=square[2][j] = '_';
}
void Set(int x,int y){
for (int i = 0;i < 3;i++)
for (int j = 0;j < 5;j++){
if (i<=0 && now[i+x][j+y]!=' ' && square[i][j]==' ') continue;
now[i+x][j+y] = square[i][j];
}
for (int i = 1;i < 2;i++)
for (int j = 1;j<4;j++)
now[i+x][j+y] = ' ';
}
bool ok(){
for (int i = 0;i < 5;i++)
for (int j = 0;j < 9;j++)
if (now[i][j]!=s[i][j])
return false;
return true;
}
void out(){
for (int i = 0;i < 5;i++){
for (int j = 0;j < 9;j++)
cout <<now[i][j];
cout << endl;
}
cout << endl;
}
bool dfs(int dep){
if (dep > 1 && ok()) return true;
if (dep >= 7) return false;
int temp[M+5][M+5];
for (int i = 0;i < 3;i++){
for (int j = 0;j < 5;j+=2){
for (int k = 0;k <3;k++)
for (int l = 0;l < 5;l++)
temp[k][l] = now[k+i][l+j];
Set(i,j);
if (dfs(dep+1)) return true;
for (int k = 0;k <3;k++)
for (int l = 0;l < 5;l++)
now[k+i][l+j] = temp[k][l];
}
}
return false;
}
int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
init();
int kase = 0;
while (1){
for (int i = 0;i < 5;i++){
cin.getline(s[i],15);
if (s[i][0]=='0') return 0;
}
for (int i = 0;i< 5;i++)
for (int j = 0;j < 9;j++)
now[i][j] = ' ';
if (dfs(1)){
cout <<"Case "<<++kase<<": Yes"<<endl;
}else{
cout <<"Case "<<++kase<<": No"<<endl;
}
}
return 0;
}
【习题 7-6 UVA - 12113】Overlapping Squares的更多相关文章
- UVA 12113 Overlapping Squares
题意: 总共有6个2*2的正方形,判断是否能够成所给的形状. 思路: 一个正方形总共有9种摆放方式,对于整个地图来说摆放方式总共有2的9次方种摆放方式.然后将地图用9*5的数组表示,正方形的位置用其8 ...
- UVA - 12113 Overlapping Squares(dfs+回溯)
题目: 给定一个4*4的棋盘和棋盘上所呈现出来的纸张边缘,问用不超过6张2*2的纸能否摆出这样的形状. 思路: dfs纸的张数,每一张中枚举这张纸左上角这个点的位置,暴力解题就可以了. 这个题的覆盖太 ...
- UVA - 12113 Overlapping Squares(重叠的正方形)
题意:给定一个4*4的棋盘和棋盘上所呈现出来的纸张边缘,问用不超过6张2*2的纸能否摆出指定的形状. 分析:2*2的纸在4*4的棋盘上总共有9种放置位置,枚举所有的放置位置即可.枚举情况总共种. #p ...
- 【UVA】201 Squares(模拟)
题目 题目 分析 记录一下再预处理一下. 代码 #include <bits/stdc++.h> int main() { int t=0,s,n; while(scanf ...
- UVA-12113 Overlapping Squares (回溯+暴力)
题目大意:问能不能用不超过6张2x2的方纸在4x4的方格中摆出给定的图形? 题目分析:暴力枚举出P(9,6)种(最坏情况)方案即可. 代码如下: # include<iostream> # ...
- LA 3790 Overlapping Squares DFS
题意: 给出一个字符矩阵,问能否是不超过6个2×2的正方形组成的. 分析: 每次找一个最表面的正方形然后DFS就好了. 一个正方形被移开后,用一个特殊符号标记上,下次再匹配的时候就直接忽略这些位置. ...
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- Detecting diabetic retinopathy in eye images
Detecting diabetic retinopathy in eye images The past almost four months I have been competing in a ...
- ACM训练计划建议(转)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
随机推荐
- How to test Heat (by quqi99)
作者:张华 发表于:2015-12-19版权声明:能够随意转载.转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (http://blog.csdn.net/quqi99 ) Heat ...
- Rapidjson的简单使用示例
很早就想用用Markdown了,一直没机会.今天就来试一下 先放个目录: Rapidjson的简单使用示例 rapidjson官方教程 本示例所用环境 示例代码与注释 rapidjson官方教程 如果 ...
- spring-security-oauth2注解详解
spring-security-oauth2支持的注解有: 1.EnableOAuth2Client 适用于使用spring security,并且想从Oauth2认证服务器来获取授权的web应用环境 ...
- Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)
一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够 ...
- Fedora27 安装Adobe Flash Player PPAPI与NPAPI实现Firefox和Chromium视频播放
一.Adobe Flash Player PPAPI与NPAPI有什么区别我们在打开网页视频时有时会弹出没有安装Flash插件的提示,此时就无法观看视频.Adobe Flash Player是浏览器显 ...
- SpringMVC框架的多表查询和增删查改
必须声明本文章==>http://www.cnblogs.com/zhu520/p/7883268.html 一: 1):我的运行环境 我使用myeclipse(你也可以使用eclipse),t ...
- idea中实现类快速重写service方法 快捷键
1.在实现类中 CTRL+O 快捷键,会弹出所有方法 2.选择service中的方法,会自动重写
- python + eclipse + django + postgresql 开发网站(二)
引用与参考 http://www.cnblogs.com/lanxuezaipiao/p/3283932.html python2.7 django1.6 1.新建Django项目
- HRBUST 1819 石子合并问题--圆形版
石子合并问题--圆形版 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HRBUST. Original ...
- Dynamics CRM2013/2015 插件注冊工具登录后无法显示assembly列表问题的解决的方法
自微软从2013版本号推出新的插件注冊器后,随着UI的重大更新后,问题也多了非常多.前面已有博客提到注冊assembly时看不到注冊button(http://blog.csdn.net/vic022 ...