Problem UVA211-The Domino Effect

Accept:536  Submit:2504

Time Limit: 3000 mSec

 Problem Description

 Input

The input file will contain several of problem sets. Each set consists of seven lines of eight integers from 0 through 6, representing an observed pattern of pips. Each set is corresponds to a legitimate configuration of bones (there will be at least one map possible for each problem set). There is no intervening data separating the problem sets.

 Output

Correct output consists of a problem set label (beginning with Set #1) followed by an echo printing of the problem set itself. This is followed by a map label for the set and the map(s) which correspond to the problem set. (Multiple maps can be output in any order.) After all maps for a problem set have been printed, a summary line stating the number of possible maps appears. At least three lines are skipped between the output from different problem sets while at least one line separates the labels, echo printing, and maps within the same problem set.
Note: A sample input file of two problem sets along with the correct output are shown.

 Sample Input

5 4 3 6 5 3 4 6
0 6 0 1 2 3 1 1
3 2 6 5 0 4 2 0
5 3 6 2 3 2 0 6
4 0 4 1 0 0 4 1
5 2 2 4 4 1 6 5
5 5 3 6 1 2 3 1
4 2 5 2 6 3 5 4
5 0 4 3 1 4 1 1
1 2 3 0 2 2 2 2
1 4 0 1 3 5 6 5
4 0 6 0 3 6 6 5
4 0 1 6 4 0 3 0
6 5 3 6 2 1 5 3
 
 

 Sample Ouput

Layout #1:
   5   4   3   6   5   3   4   6
   0   6   0   1   2   3   1   1
   3   2   6   5   0   4   2   0
   5   3   6   2   3   2   0   6
   4   0   4   1   0   0   4   1
   5   2   2   4   4   1   6   5
   5   5   3   6   1   2   3   1
 
Maps resulting from layout #1 are:
 
   6  20  20  27  27  19  25  25
   6  18   2   2   3  19   8   8
  21  18  28  17   3  16  16   7
  21   4  28  17  15  15   5   7
  24   4  11  11   1   1   5  12
  24  14  14  23  23  13  13  12
  26  26  22  22   9   9  10  10
 
There are 1 solution(s) for layout #1.
 
 
 
Layout #2:
   4   2   5   2   6   3   5   4
   5   0   4   3   1   4   1   1
   1   2   3   0   2   2   2   2
   1   4   0   1   3   5   6   5
   4   0   6   0   3   6   6   5
   4   0   1   6   4   0   3   0
   6   5   3   6   2   1   5   3
 
Maps resulting from layout #2 are:
 
  16  16  24  18  18  20  12  11
   6   6  24  10  10  20  12  11
   8  15  15   3   3  17  14  14
   8   5   5   2  19  17  28  26
  23   1  13   2  19   7  28  26
  23   1  13  25  25   7   4   4
  27  27  22  22   9   9  21  21
 
  16  16  24  18  18  20  12  11
   6   6  24  10  10  20  12  11
   8  15  15   3   3  17  14  14
   8   5   5   2  19  17  28  26
  23   1  13   2  19   7  28  26
  23   1  13  25  25   7  21   4
  27  27  22  22   9   9  21   4
 
There are 2 solution(s) for layout #2.
 
题解:非常暴力的搜索。想了半天剪枝怎么剪,最后发现不用剪......(想想也对,可能的情况确实比较少)
 
 #include <bits/stdc++.h>

 using namespace std;

 const int maxn = ;
const int n = ,m = ; int table[maxn][maxn];
int gra[maxn][maxn],ans[maxn][maxn];
int _count;
bool vis[maxn][maxn];
bool used[maxn<<];
int dx[] = {,};
int dy[] = {,}; void init(){
memset(table,,sizeof(table));
memset(vis,false,sizeof(vis));
memset(used,false,sizeof(used));
int i = ,j = ,cnt = ;
for(int len = ;len >= ;len--){
for(int p = j;p < ;p++){
table[i][p] = table[p][i] = cnt++;
}
i++,j++;
}
} void dfs(int x,int y,int cnt){
if(cnt == ){
_count++;
for(int i = ;i < n;i++){
for(int j = ;j < m;j++){
printf("%4d",ans[i][j]);
}
printf("\n");
}
printf("\n");
return;
} if(y == m) x++,y = ;
if(vis[x][y]) dfs(x,y+,cnt);
else{
for(int i = ;i < ;i++){
int xx = x+dx[i],yy = y+dy[i];
if(xx>=n || yy>=m) continue;
if(vis[xx][yy] || used[table[gra[x][y]][gra[xx][yy]]]) continue; ans[x][y] = ans[xx][yy] = table[gra[x][y]][gra[xx][yy]];
vis[x][y] = vis[xx][yy] = used[table[gra[x][y]][gra[xx][yy]]] = true;
dfs(x,y+,cnt+);
vis[x][y] = vis[xx][yy] = used[table[gra[x][y]][gra[xx][yy]]] = false;
}
}
} int main()
{
#ifdef GEH
freopen("input.txt","r",stdin);
#endif
init();
int iCase = ;
while(~scanf("%d",&gra[][])){
for(int i = ;i < n;i++){
for(int j = ;j < m;j++){
if(i== && j==) continue;
scanf("%d",&gra[i][j]);
}
} if(iCase) printf("\n\n\n");
printf("Layout #%d:\n\n",++iCase);
for(int i = ;i < n;i++){
for(int j = ;j < m;j++){
printf("%4d",gra[i][j]);
}
printf("\n");
}
printf("\n");
printf("Maps resulting from layout #%d are:\n\n",iCase);
_count = ;
dfs(,,);
printf("There are %d solution(s) for layout #%d.\n",_count,iCase);
}
return ;
}
 

UVA211-The Domino Effect(dfs)的更多相关文章

  1. CF 405B Domino Effect(想法题)

    题目链接: 传送门 Domino Effect time limit per test:1 second     memory limit per test:256 megabytes Descrip ...

  2. [ACM_图论] Domino Effect (POJ1135 Dijkstra算法 SSSP 单源最短路算法 中等 模板)

    Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...

  3. POJ 1135 Domino Effect(Dijkstra)

    点我看题目 题意 : 一个新的多米诺骨牌游戏,就是这个多米诺骨中有许多关键牌,他们之间由一行普通的骨牌相连接,当一张关键牌倒下的时候,连接这个关键牌的每一行都会倒下,当倒下的行到达没有倒下的关键牌时, ...

  4. POJ 1135 Domino Effect (spfa + 枚举)- from lanshui_Yang

    Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...

  5. POJ 1135 Domino Effect (Dijkstra 最短路)

    Domino Effect Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9335   Accepted: 2325 Des ...

  6. POJ 1135.Domino Effect Dijkastra算法

    Domino Effect Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10325   Accepted: 2560 De ...

  7. zoj 1298 Domino Effect (最短路径)

    Domino Effect Time Limit: 2 Seconds      Memory Limit: 65536 KB Did you know that you can use domino ...

  8. TOJ 1883 Domino Effect

    Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...

  9. [POJ] 1135 Domino Effect

    Domino Effect Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12147 Accepted: 3046 Descri ...

随机推荐

  1. Java学习笔记之——方法重载

    方法重载: overload 1. 方法签名 组成:方法名(参数列表) 参数列表不同分为哪些情况? (1)有无参数 (2)参数的类型 (3)参数的个数 (4)参数的顺序(前提是类型不一样) 2.方法重 ...

  2. Eclipse中SVN插件的安装和配置(离线安装)

    Eclipse利用svn的离线安装包进行配置svn,这种方式配置起来很简单,但是前提是必须下载可用的的svn离线包.因为有的从网上下载的svn离线包有问题. 第一步:下载svn离线包 我下载的是下面这 ...

  3. python多线程-共享全局变量

    目录 多线程-共享全局变量 多线程-共享全局变量 列表当作实参传递到线程中 总结 多线程-共享全局变量问题 多线程开发可能遇到的问题 测试1 测试2 多线程-共享全局变量 多线程-共享全局变量 imp ...

  4. 性能监控(4)–linux下的pidstat命令

    pidstat是一个可以监控到线程的监控工具,可以使用-p指定进程ID. pidstat–p <PID> [delay] [times] –u –t 可以监控线程的CPU使用率 当某一个线 ...

  5. Mac下写博客工具MarsEdit相关资料

    参考资料: https://www.maoshu.cc/967.html 下载地址: https://www.red-sweater.com/marsedit/ 博客园的配置: http://www. ...

  6. How to Create a First Shell Script

    How to Create a First Shell Script   Shell scripts are short programs that are written in a shell pr ...

  7. 设计模式—装饰模式的C++实现

    这是Bwar在2009年写的设计模式C++实现,代码均可编译可运行,一直存在自己的电脑里,曾经在团队技术分享中分享过,现搬到线上来. 1. 装饰模式简述 1.1 目的 动态地给一个对象添加一些额外的职 ...

  8. html之input标签(11)

    1.输入框 type=“text” 就是一个简单的输入框 <body> <input type="text"> </body> 2.密码输入框 ...

  9. 短连接、长连接与keep-alive

    短连接与长连接 通俗来讲,浏览器和服务器每进行一次通信,就建立一次连接,任务结束就中断连接,即短连接.相反地,假如通信结束(如完成了某个HTML文件的信息获取)后保持连接则为长连接.在HTTP/1.0 ...

  10. Android Studio手动打包

    项目写完了,现在需要把应用上传到市场上面,那么怎么把项目打包成apk?(Android的可安装文件). 1. 创建签名文件 2. 填写好签名参数 3. 生成APK 注意:签名的密码和密匙的密码注意保管 ...