题目链接:

https://vjudge.net/problem/UVA-387

思路:

非常有意思的拼图,深搜+回溯,

输出硬伤:除了第一次之外,每次先输空格,再输出结果,

以及可能给的数据拼不成4*4表格的情况。

 1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 int vis[5][5];
6 int g[10010][5][5];
7 int maze[10010][2];
8 int sum=0;
9 int n;
10 int Find=0,Case=0;
11 void dfs(int cur){
12 if(cur==n+1){//
13 Find=1;
14 for(int i=0;i<4;i++){
15 for(int j=0;j<4;j++){
16 printf("%d",vis[i][j]);
17 }
18 printf("\n");
19 }
20 return;
21 }
22 if(Find) return;
23 for(int i=0;i<=4-maze[cur][0];i++){//4*4表格起点横坐标
24 for(int j=0;j<=4-maze[cur][1];j++){//4*4表格起点纵坐标
25 int flag=0;//判重
26 for(int p=0;p<maze[cur][0];p++){
27 for(int q=0;q<maze[cur][1];q++){
28 if(!flag&&!vis[i+p][j+q]&&g[cur][p][q]==1)
29 vis[i+p][j+q]=cur;
30 else if(!flag&&g[cur][p][q]==0)
31 continue;
32 else
33 flag=1;
34 }
35 }
36 if(!flag) dfs(cur+1);
37
38 if(Find) return;
39 for(int p=0;p<4;p++){//重新扫描一遍表格,将上一次的清零
40 for(int q=0;q<4;q++){
41 if(vis[p][q]==cur)
42 vis[p][q]=0;
43 }
44 }
45 }
46 }
47 }
48 void init(){
49 memset(vis,0,sizeof(vis));
50 memset(g,0,sizeof(g));
51 memset(maze,0,sizeof(maze));
52 sum=0;
53 Find=0;
54 Case++;
55 }
56 int main(int argc, char** argv) {
57 while(scanf("%d",&n)!=EOF){
58 if(n==0) break;
59 init();
60
61 for(int i=1;i<=n;i++){
62 scanf("%d %d",&maze[i][0],&maze[i][1]);
63 string line;
64
65 for(int j=0;j<maze[i][0];j++){
66 cin>>line;
67 for(int k=0;k<maze[i][1];k++){
68 g[i][j][k]=line[k]-'0';
69 sum+=g[i][j][k];//有可能根本拼不成
70 }
71 }
72 }
73 if(Case!=1) printf("\n");
74 if(sum==16)
75 dfs(1);
76 if(!Find) printf("No solution possible\n");
77 }
78 return 0;
79 }

UVA - 387 A Puzzling Problem的更多相关文章

  1. uva 387 A Puzzling Problem (回溯)

     A Puzzling Problem  The goal of this problem is to write a program which will take from 1 to 5 puzz ...

  2. UVa 101 The Blocks Problem Vector基本操作

    UVa 101 The Blocks Problem 一道纯模拟题 The Problem The problem is to parse a series of commands that inst ...

  3. uva387 - A Puzzling Problem

    A Puzzling Problem The goal of this problem is to write a program which will take from 1 to 5 puzzle ...

  4. 【暑假】[深入动态规划]UVa 1380 A Scheduling Problem

     UVa 1380 A Scheduling Problem 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=41557 ...

  5. UVA - 524 Prime Ring Problem(dfs回溯法)

    UVA - 524 Prime Ring Problem Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & % ...

  6. uva 10837 - A Research Problem(欧拉功能+暴力)

    题目链接:uva 10837 - A Research Problem 题目大意:给定一个phin.要求一个最小的n.欧拉函数n等于phin 解题思路:欧拉函数性质有,p为素数的话有phip=p−1; ...

  7. UVA 810 - A Dicey Problem(BFS)

    UVA 810 - A Dicey Problem 题目链接 题意:一个骰子,给你顶面和前面.在一个起点,每次能移动到周围4格,为-1,或顶面和该位置数字一样,那么问题来了,骰子能不能走一圈回到原地, ...

  8. UVA 10026 Shoemaker's Problem 鞋匠的难题 贪心+排序

    题意:鞋匠一口气接到了不少生意,但是做鞋需要时间,鞋匠只能一双一双地做,根据协议每笔生意如果拖延了要罚钱. 给出每笔生意需要的天数和每天的罚钱数,求出最小罚钱的排列顺序. 只要按罚款/天数去从大到小排 ...

  9. UVA 1640 The Counting Problem UVA1640 求[a,b]或者[b,a]区间内0~9在里面各个数的数位上出现的总次数。

    /** 题目:UVA 1640 The Counting Problem UVA1640 链接:https://vjudge.net/problem/UVA-1640 题意:求[a,b]或者[b,a] ...

随机推荐

  1. MISC-吹着贝斯扫二维码

    题目 [安洵杯 2019]吹着贝斯扫二维码 解压附件,有36个文件和一个压缩包,压缩包带密码和备注 分析 文件类型 随便打开一个不明文件,是jpg图片啊(FF D8 FF) 改一个试试,有一个小块二维 ...

  2. HTTPS和HTTP的那些事

    随着信息安全变得越来越重要,在浏览器.搜索引擎.CA机构.大型互联网企业的共同促进下,互联网迎来了"HTTPS加密时代".HTTPS在HTTP上建立了SSL加密层,是HTTP协议的 ...

  3. 图像处理论文详解 | Deformable Convolutional Networks | CVPR | 2017

    文章转自同一作者的微信公众号:[机器学习炼丹术] 论文名称:"Deformable Convolutional Networks" 论文链接:https://arxiv.org/a ...

  4. C#爬虫,让你不再觉得神秘

    1.使用第三方类库 HtmlAgilityPack 官方网址:https://html-agility-pack.net/?z=codeplex. // From File 从文件获取html信息 v ...

  5. Kali Linux破解wifi密码(无须外置网卡)

    环境准备:  方式一(选择该方式):Kali Linux.笔记本一台.U盘(至少8G)  方式二:Kali Linux.外置网卡.笔记本一台.VM   特别说明,主要是使用方式一进行破解,如果有外置网 ...

  6. mysql多个TimeStamp设置

    mysql多个TimeStamp设置 2012-11-02 12:58  轩脉刃  阅读(39590)  评论(3)  编辑  收藏 timestamp设置默认值是Default CURRENT_TI ...

  7. Liunx运维(七)-用户管理及用户信息查询命令

    文档目录: 一.useradd:创建用户 二.usermod:修改用户信息 三.userdel:删除用户 四.groupadd:创建新的用户组 五.groupdel:删除用户组 六.passwd:修改 ...

  8. Spring boot 启动错误处理:Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular...

    错误原因 在pom中引入了mybatis-spring-boot-starter ,Spring boot默认会加载org.springframework.boot.autoconfigure.jdb ...

  9. 本地项目上传至GitHub

    本地项目上传至GitHub 使用git上传 一.安装git 直接官网下载,安装即可. git官网下载 github下载 按照好后大概就是这个样子 二.创建公钥和私钥 有的就可跳过此步骤 我们双击打开g ...

  10. maven仲裁机制

    maven仲裁机制 玩过springboot的人都知道  springboot项目中你一般看不到大段的spring相关包 而是像 spring-boot-start一个jar包就包含spring相关的 ...