【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

每次搜素要往下还是要往右摆。
然后维护一下让每个下标只出现一次就可以了。
=>作为剪枝条件

【代码】

/*
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; int a[N][N];
int bo[N][N],now[N][N];
int cnt[100],ans; void Init(){
int cnt = 1;
for (int i = 0;i <= 6;i++){
for (int j = i;j <= 6;j++){
bo[i][j] = cnt++;
}
}
} bool out(){
for (int i = 1;i <=7;i++){
for (int j = 1;j <= 8;j++)
cout <<setw(4)<<now[i][j];
cout << endl;
}
cout << endl << endl;
return true;
} void dfs(int x,int y){
if (y==9){
if (x==7){
ans++;
out();
return;
}
dfs(x+1,1);
return;
}
if (now[x][y]!=0){
dfs(x,y+1);
return;
}
//向下
if (x+1<=7){
int tx = min(a[x+1][y],a[x][y]),ty = max(a[x+1][y],a[x][y]);
now[x+1][y] = now[x][y] = bo[tx][ty];
cnt[bo[tx][ty]]++;
if (cnt[bo[tx][ty]]==1)dfs(x,y+1);
cnt[bo[tx][ty]]--;
now[x+1][y] = now[x][y] = 0;
}
//向右
if (y+1<=8 && now[x][y+1]==0){
int tx = min(a[x][y+1],a[x][y]),ty = max(a[x][y+1],a[x][y]);
now[x][y+1] = now[x][y] = bo[tx][ty];
cnt[bo[tx][ty]]++;
if (cnt[bo[tx][ty]]==1)dfs(x,y+1);
cnt[bo[tx][ty]]--;
now[x][y+1] = now[x][y] = 0;
}
} 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 (cin >> a[1][1]){
if (Kase>0){
cout << endl<<endl<<endl<<endl<<endl;
}
ans = 0;
for (int j = 2;j <= 8;j++) cin >> a[1][j];
for (int i = 2;i <= 7;i++)
for (int j = 1;j <= 8;j++)
cin >> a[i][j]; cout <<"Layout #"<<++Kase<<":"<<endl<<endl<<endl;
for (int i = 1;i <= 7;i++){
for (int j = 1;j <= 8;j++){
cout <<setw(3)<<a[i][j];
}
cout << endl;
}
cout << endl;
cout <<"Maps resulting from layout #"<<Kase<<" are:"<<endl<<endl<<endl;
dfs(1,1);
cout <<"There are "<<ans<<" solution(s) for layout #"<<Kase<<"."<<endl;
}
return 0;
}

【习题 7-3 UVA - 211】The Domino Effect的更多相关文章

  1. UVA 211 The Domino Effect 多米诺效应 (回溯)

    骨牌无非两种放法,横着或竖着放,每次检查最r,c最小的没访问过的点即可.如果不能放就回溯. 最外面加一层认为已经访问过的位置,方便判断. #include<bits/stdc++.h> ; ...

  2. UVA - 211 The Domino Effect(多米诺效应)(dfs回溯)

    题意:根据多米诺骨牌的编号的7*8矩阵,每个点可以和相邻的点组成的骨牌对应一个编号,问能形成多少种由编号组成的图. 分析:dfs,组成的图必须有1~28所有编号. #pragma comment(li ...

  3. uva 211(dfs)

    211 - The Domino Effect Time limit: 3.000 seconds A standard set of Double Six dominoes contains 28 ...

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

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

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

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

  6. POJ 1135 Domino Effect(Dijkstra)

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

  7. 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 ...

  8. UVA211-The Domino Effect(dfs)

    Problem UVA211-The Domino Effect Accept:536  Submit:2504 Time Limit: 3000 mSec  Problem Description ...

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

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

  10. POJ 1135.Domino Effect Dijkastra算法

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

随机推荐

  1. 泛泰A820L (高通MSM8660 cpu) 3.4内核的CM10.1(Android 4.2.2) 測试版第二版

    欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam  (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...

  2. 分布式架构中shiro

    分布式架构中shiro 前言:前段时间在搭建公司游戏框架安全验证的时候,就想到之前web最火的shiro框架,虽然后面实践发现在netty中不太适用,最后自己模仿shiro写了一个缩减版的,但是中间花 ...

  3. oracle job有定时执行功能

    oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务.   oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的 ...

  4. matlab中plot画图参数的设置

    原文链接:http://blog.sciencenet.cn/blog-281551-573856.html 一.Matlab绘图中用到的直线属性包括: (1)LineStyle:线形 (2)Line ...

  5. Facebook下载总结

    Facebook是美国的一个社交网络服务网站,至今注册用户已超越20亿,月活用户更是惊人的突破3亿. 这样庞大的一个社交类网站,每日产生的社交数据当然也是非常可观,而这些社交数据,更接近口语,所以是比 ...

  6. 昼猫笔记 从此告别复杂代码--JavaScript

    昼猫笔记--给你带来不一样的笔记 不止是笔记 更多的是思考 大家好,我是一只来自喵星的前端初学者,由于我们喵星人科技较为落后,昼猫从今天开始带着使命来到地球学习前端知识. 从今天开始,猫猫我就从Jav ...

  7. Deepin for Linux 下串口调试交换机

    最近因工作需要,在淘宝购买了一条宇泰的串口线:USB to RS232 之所以选择这款,主要是它支持 Windows.Linux.mac Linux机是Deepin for Linux,算是国产比较好 ...

  8. python全栈_day01

    计算机容量 1位 = 1bit  8bit = 1byte = 1字节      1024bytes = 1kbytes =1KB  1024个字符,小文档 ,几百k可以表示一张图片  1024KB ...

  9. oracle 数据库批处理文件

    文件夹结构 初始化脚本 |----orcl_sql |----init_user.sql |----tab_home.sql |----TAB_USER.sql |----init.bat init. ...

  10. SQL Server 为代码减负之存储过程

        存储过程能够用来提高数据库的查询效率.由于它事先被编译过.被储存于内存中,每次执行前.不必被从新编译,所以效率非常高. 存储过程是一组sql增删改查的集合,假设程序中的一个功能涉及到对数据库的 ...