题目大意:问能不能用不超过6张2x2的方纸在4x4的方格中摆出给定的图形?

题目分析:暴力枚举出P(9,6)种(最坏情况)方案即可。

代码如下:

# include<iostream>
# include<cstdio>
# include<cstring>
# include<algorithm>
using namespace std; int vis[10];
char mp[8][15],p1[8][15]; bool judge()
{
for(int i=0;i<5;++i)
for(int j=0;j<9;++j)
if(mp[i][j]!=p1[i][j])
return false;
return true;
} bool dfs(int step)
{
if(judge())
return true; if(step>=6)
return false; char p2[6][10];
for(int i=0;i<5;++i)
for(int j=0;j<9;++j)
p2[i][j]=p1[i][j]; for(int i=0;i<9;++i){
if(vis[i])
continue; vis[i]=1;
int r=i/3,c=2*(i%3)+1;
p1[r][c]=p1[r][c+2]=p1[r+2][c]=p1[r+2][c+2]='_';
p1[r+1][c-1]=p1[r+2][c-1]=p1[r+1][c+3]=p1[r+2][c+3]='|';
p1[r+1][c]=p1[r+1][c+1]=p1[r+1][c+2]=p1[r+2][c+1]=' '; if(dfs(step+1))
return true; vis[i]=0;
for(int i=0;i<5;++i)
for(int j=0;j<9;++j)
p1[i][j]=p2[i][j];
} return false;
} int main()
{
int cas=0;
while(1)
{
for(int i=0;i<5;++i){
gets(mp[i]);
if(mp[i][0]=='0')
return 0;
}
printf("Case %d: ",++cas); for(int i=0;i<5;++i)
for(int j=0;j<9;++j)
p1[i][j]=' '; memset(vis,0,sizeof(vis));
if(dfs(0))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

  

UVA-12113 Overlapping Squares (回溯+暴力)的更多相关文章

  1. UVA - 12113 Overlapping Squares(dfs+回溯)

    题目: 给定一个4*4的棋盘和棋盘上所呈现出来的纸张边缘,问用不超过6张2*2的纸能否摆出这样的形状. 思路: dfs纸的张数,每一张中枚举这张纸左上角这个点的位置,暴力解题就可以了. 这个题的覆盖太 ...

  2. UVA 12113 Overlapping Squares

    题意: 总共有6个2*2的正方形,判断是否能够成所给的形状. 思路: 一个正方形总共有9种摆放方式,对于整个地图来说摆放方式总共有2的9次方种摆放方式.然后将地图用9*5的数组表示,正方形的位置用其8 ...

  3. UVA - 12113 Overlapping Squares(重叠的正方形)

    题意:给定一个4*4的棋盘和棋盘上所呈现出来的纸张边缘,问用不超过6张2*2的纸能否摆出指定的形状. 分析:2*2的纸在4*4的棋盘上总共有9种放置位置,枚举所有的放置位置即可.枚举情况总共种. #p ...

  4. UVA.129 Krypton Factor (搜索+暴力)

    UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...

  5. UVA.10986 Fractions Again (经典暴力)

    UVA.10986 Fractions Again (经典暴力) 题意分析 同样只枚举1个,根据条件算出另外一个. 代码总览 #include <iostream> #include &l ...

  6. 【习题 7-6 UVA - 12113】Overlapping Squares

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先预处理出来一个正方形. 然后每次枚举新加的正方形左上角的坐标就可以. 注意覆盖的规则,控制一下就可以. 然后暴力判断是否相同. 暴 ...

  7. UVA 270 Lining Up 共线点 暴力

    题意:给出几个点的位置,问一条直线最多能连过几个点. 只要枚举每两个点组成的直线,然后找直线上的点数,更新最大值即可. 我这样做过于暴力,2.7s让人心惊肉跳...应该还能继续剪枝的,同一直线找过之后 ...

  8. uva 10825 - Anagram and Multiplication(暴力)

    题目链接:uva 10825 - Anagram and Multiplication 题目大意:给出m和n,要求找一个m位的n进制数,要求说该数乘以2~m中的随意一个数的结果是原先数各个位上数值的一 ...

  9. UVa 11210 Chinese Mahjong (暴力,递归寻找)

    题意:这个题意.有点麻烦,就是说给定13张牌,让你求能“听”的牌.(具体的见原题) 原题链接: https://uva.onlinejudge.org/index.php?option=com_onl ...

随机推荐

  1. 【翻唱】白金disco

    http://video.yingtu.co/0/bbea91f8-e1ce-4211-9519-2371745f4ec0.mp4 [翻唱]白金disco

  2. 不是最强大的vimrc

    一直都是使用vim作为我的主要编辑器,它大大提高了我的代码编辑效率.vim的配置高度灵活.插件丰富,恐怕100个人就有99种配置方法,网上关于vim配置的所谓“最强大的vimrc”之类的文章不少,博人 ...

  3. linux性能分析工具之火焰图

    一.环境 1.1 jello@jello:~$ uname -a Linux jello 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 14:24:03 UT ...

  4. 【Streaming】30分钟概览Spark Streaming 实时计算

    本文主要介绍四个问题: 什么是Spark Streaming实时计算? Spark实时计算原理流程是什么? Spark 2.X下一代实时计算框架Structured Streaming Spark S ...

  5. C#中的DllImport使用方法

    DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息 DllImport属性应用于方法,要求最少要 ...

  6. [NLP/Attention]关于attention机制在nlp中的应用总结

    原文链接: https://blog.csdn.net/qq_41058526/article/details/80578932 attention 总结 参考:注意力机制(Attention Mec ...

  7. 【eclipse】聚合工程maven启动Tomcat报错

    严重: Error configuring application listener of class严重: Skipped installing application listeners due ...

  8. pyqt 渲染html

    from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtWebE ...

  9. Jmeter 同一个测试计划下的多个线程组 执行顺序 希望调整为顺序执行

    用Jmeter做自动化测试,一个测试计划中添加多个线程组, 每个线程组的功能测试,希望是一个线程组执行完毕后,接着执行下一个线程组下的请求 Jmeter默认多个线程组之间是并行关系 需要在测试计划下勾 ...

  10. STL_算法_03_拷贝和替换算法

    ◆ 常用的拷贝和替换算法: 1.1.复制(容器A(全部/部分) 复制到 容器B(全部/部分)),返回的值==>iteratorOutBegin.end() iterator copy(itera ...