题目:跟N皇后问题一样,不考虑对角冲突,但考虑墙的存在,只要中间有墙就不会冲突。

N皇后一行只能放一个,而这题不行,所以用全图暴力放棋,回溯dfs即可,题目最多就到4*4,范围很小。

刚开始考虑放一个棋子后就把其他不能放的地方标记下,然后再暴力,后来发现如果一个点重复标记在去标记时就会把点标成合法的,于是改用放棋子是进行检查,由于数据量小,也不会占用多少时间。

之后才想到,在标记时可以用累加的,去标记时再一个一个减下来即可。。。

代码:

#include <cstdio>

const int maxn = 5;
char map[maxn][maxn];
int ans, n; bool isok(int x, int y) {
for (int i = x + 1; i <= n && map[i][y] != 'X'; i++)
if(map[i][y] == '0')
return false;
for (int i = x - 1; i >= 1 && map[i][y] != 'X'; i--)
if(map[i][y] == '0')
return false;
for (int i = y; i <= n && map[x][i] != 'X'; i++)
if (map[x][i] == '0')
return false;
for (int i = y - 1; i >= 1 && map[x][i] != 'X'; i--)
if (map[x][i] == '0')
return false;
return true;
} void dfs(int x, int y, int p) {
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (map[i][j] == '.' && isok(i, j)) {
map[i][j] = '0';
dfs(i, j, p + 1);
map[i][j] = '.';
}
if (ans < p)
ans = p;
} int main() {
while (scanf("%d", &n) && n) {
gets(map[0]);
for (int i = 1; i <= n; i++)
gets(map[i] + 1);
ans = 0;
dfs(1, 1, 0);
printf("%d\n", ans);
}
return 0;
}

uva 639 Don't Get Rooked 变形N皇后问题 暴力回溯的更多相关文章

  1. UVA 11280 - Flying to Fredericton SPFA变形

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&c ...

  2. UVA 639 (13.08.25)

     Don't Get Rooked  In chess, the rook is a piece that can move any number of squaresvertically or ho ...

  3. UVA Don&#39;t Get Rooked

    主题如以下:  Don't Get Rooked  In chess, the rook is a piece that can move any number of squaresverticall ...

  4. UVa 1395 - Slim Span(最小生成树变形)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. uva 10723 Cyborg Genes(LCS变形)

    题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=107450#problem/C 题意:输入两个字符串,找一个最短的串,使得输入的两个 ...

  6. 紫书 习题 11-7 UVa 10801 (单源最短路变形)

    把每个电梯口看作一个节点, 然后计算边的权值的时候处理一下, 就ok了. #include<cstdio> #include<vector> #include<queue ...

  7. Uva 1471 Defense Lines(LIS变形)

    题意: 给你一个数组,让你删除一个连续的子序列,使得剩下的序列中有最长上升子序列, 求出这个长度. 题解: 预处理:先求一个last[i],以a[i]为开始的合法最长上升子序列的长度.再求一个pre[ ...

  8. uva 301 Transportation 铁路公司的阳谋 纯dfs暴力

    题目比较难理解. 给出铁路的容量和站点数,以及几笔订单,要求算出如何盈利最大. 咋一看想贪心,但无法确定是最优解啊. 于是用dfs做,就两种状况,选与不选,先开一个每个站点的当前人数数组,假设要选,然 ...

  9. Chinese Mahjong UVA - 11210 (暴力+回溯递归)

    思路:得到输入得到mj[]的各个牌的数量,还差最后一张牌.直接暴力枚举34张牌就可以了. 当假设得到最后一张牌,则得到了的牌看看是不是可以胡,如果可以胡的话,就假设正确.否者假设下一张牌. 关键还是如 ...

随机推荐

  1. Git 操作常用命令

    Git使用 1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push ...

  2. Mining 影响数据挖掘结果的 5 方面

    第一个: 数据类型. 对象的不同属性会用不同的数据类型来描述,如  年龄-->int; 生日 -->date;数据挖掘时也要对不同的类型有不同的对待. 第二个: 数据质量. 数据质量直接影 ...

  3. Oracle 11g R2安装手册(图文教程)For Windows

    1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下 官方网站: http://download.or ...

  4. 忘记linux密码

    http://blog.163.com/xygzlyq@126/blog/static/22585899200810471512530/

  5. 论山寨手机与Android 【12】3G时代SmartPhone BP部分

    最成熟的3G网络系统,是3GPP项目组制订的WCDMA.WCDMA的网络结构,可参考Figure 12.1,其中有几个特点. 1. 反向兼容GSM/GRPS网络. 原有GSM网络的基站子系统(BSS) ...

  6. 中国市场 Android App 兼容性报告

      由于手机操作系统的不同,以及操作系统版本之间的差异,使得真机测试这个过程尤其复杂,涉及终端.人员.工具.时间.管理等方面的问题,Android系统的设备因操作系统多样性和终端类型的庞杂,问题尤为复 ...

  7. POJ 3484 Showstopper(二分答案)

    [题目链接] http://poj.org/problem?id=3484 [题目大意] 给出n个等差数列的首项末项和公差.求在数列中出现奇数次的数.题目保证至多只有一个数符合要求. [题解] 因为只 ...

  8. Spring、Hello Spring

    1.引入Spring jar包 2.新建一个Person 接口和Person Bean public interface PersonIService { public void helloSprin ...

  9. VS2013启动项目调试的时候会启动本地IIS

    VS2013启动项目调试的时候会启动本地IIS ,而在这种状态下去调试程序,会有很多功能用不了,而且还会有错误:如下图: 解决方法,将托管管道模式更改一下就行了:

  10. javascript第四课变量作用域

    局部变量: function f1() { var n1=0;  //局部变量 n1=10; //全局变量,当前页面均可调用 } n1=10;//全局变量 var n1=10;//全局变量 在方法内的 ...