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. Mac下安装最新版本的Graphviz

    由于版本兼容问题,Mac下Graphviz之前一直装的是低版本的2.36.高版本的安装方法如下: 1.log in & download Xcode an Xcode Command Line ...

  2. Springboot使用Filter以及踩过的坑

    Springboot使用Filter以及踩过的坑 在Springboot中使用Filter有两种方式,注解方式,注册bean方式 一.注解@WebFilter 1.实现Filter接口(javax.s ...

  3. C#DataTable添加列、C#指定位置添加列

    DataSet ds = SQlHelper.GetDataTable(Con, sb.ToString()); ds.Tables[].Columns.Add("Check", ...

  4. 08-HTML-框架标签

    <html> <head>  <title>框架标签学习</title>  <meta charset="utf-8"/> ...

  5. CA 工作流程

    散列函数 Hash 常见的有 MD5, SHA1, SHA256, 该类函数特点是函数单向不可逆,对输入非常敏感,输出长度固定,针对数据的任何修改都会改变散列函数的结果,用于防止信息篡改并验证数据的完 ...

  6. js 金额处理加小数点后两位

    function toDecimal2(x) { var f = parseFloat(x); if (isNaN(f)) { return false; } var f = Math.round(x ...

  7. Markdown简单上手

    标题 # +内容 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 字体 1. 加粗(Ctrl+B) **加粗** 2. 斜体(Ctrl+I) *斜体* 3. 斜体加粗(Ctrl+B+I) ...

  8. 如何用ABP框架快速完成项目(8) - 用ABP一个人快速完成项目(4) - 能自动化就不要手动 - 使用自动化测试(BDD/TDD)

    做为一个程序员, 深深知道计算机自动化的速度是比人手动的速度快的, 所以”快速”完成项目的一个重要武器就是: 能自动化就不要手动.   BDD/TDD有很多优势, 其中之一就是自动化, 我们这节文章先 ...

  9. leaflet 如何绘制圆

    方法1(根据指定的半径和中心点去绘制圆) var polygon1 = new L.Circle([34, 108], 120000, { color: 'red', //颜色 fillColor: ...

  10. Android为TV端助力 帧动画

    首先在res/drawable/name1.xml/定义一组图片集合: <?xml version="1.0" encoding="utf-8"?> ...