【习题 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 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
随机推荐
- 当我们谈论Erlang Maps时,我们谈论什么 Part 1
Erlang 添加 Maps数据类型并非非常突然,由于这个提议已经进行了2~3年之久,仅仅只是Joe Armstrong老爷子近期一篇文章Big changes to Erlang掀起不小了 ...
- 动态调用web服务 --WSHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Net;us ...
- COWRUN
USACO COWRUN 随机化搜索+双重递归调用 题面描述:给出8*N(<=14)组牌,每次按顺序选择8张,FJ可以选择前4张或者后4张,COW从FJ选出的牌中选择前两张或者后两张,然后COW ...
- 最长上升子序列(LIS)nlogn模板
参考https://www.cnblogs.com/yuelian/p/8745807.html 注意最长上升子序列用lower_bound,最长不下降子序列用upper_bound 比如123458 ...
- Floyd-Warshall 算法-- 最短路径(适合节点密集的图)
由于此算法时间复杂度为O(V³).大多数情况下不如迪杰斯特拉算法的.迪杰斯特拉算法适合于节点疏散的图. 演示样例图例如以下: Step 1 创建节点与边的最短路径结果表(直接可达关系).数 ...
- js -- fileData 实现文件断点续传
前端实现文件的断点续传 一.一些知识准备 断点续传,既然有断,那就应该有文件分割的过程,一段一段的传. 以前文件无法分割,但随着HTML5新特性的引入,类似普通字符串.数组的分割,我们可以可以使用sl ...
- shell项目-分发系统-构建文件分发系统
shell项目-分发系统-构建文件分发系统 需求背景对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台.所以,自动同步文件是至关重要的. 实 ...
- 请妥善保管自己的QQ等网络帐号
自从2008年以来,太多的同学.朋友,QQ等网络帐号被盗. 然后,盗号者来骗钱.比如 借用账号.帮忙支付费用等. 盗号者固然可恶,传统骗子的网络版. 可是,这些帐号的主人就仅仅是可怜么? 自己的号被盗 ...
- 为ImageView设置背景图片(代码中)
仅仅需三行代码: Resources resources = getBaseContext().getResources(); Drawable imageDrawable = resources.g ...
- hdu 3294 Girls' research
#include<stdio.h> #include<string.h> #define MAX 200020 char s[MAX],ss[MAX*2],str[2]; in ...