#include<iostream>

using namespace std;

int n,Max,C[4][4];
char board[5][5];
bool vis[16];
bool isok(int x,int y)
{
for (int i = x + 1; i < n && board[i][y] != 'X'; i++)
if(board[i][y] == '0')
return false;
for (int i = x - 1; i >= 0 && board[i][y] != 'X'; i--)
if(board[i][y] == '0')
return false;
for (int i = y; i < n && board[x][i] != 'X'; i++)
if (board[x][i] == '0')
return false;
for (int i = y - 1; i >= 0 && board[x][i] != 'X'; i--)
if (board[x][i] == '0')
return false;
return true;
}
void dfs(int num)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (board[i][j]=='.'&&isok(i,j))
{
board[i][j]='0';
dfs(num+1);
board[i][j]='.';
}
}
}
if (num>Max) Max=num;
}
int main()
{
while (cin>>n&&n)
{
for (int i=0;i<n;i++)
cin>>board[i];
Max=0;
dfs(0);
cout<<Max<<endl;
}
return 0;
}

回溯法还是不熟练,参考了一下网上别的童鞋的代码才AC的,要多加练习!

uva639 回溯!的更多相关文章

  1. N皇后问题—初级回溯

    N皇后问题,最基础的回溯问题之一,题意简单N*N的正方形格子上放置N个皇后,任意两个皇后不能出现在同一条直线或者斜线上,求不同N对应的解. 提要:N>13时,数量庞大,初级回溯只能保证在N< ...

  2. jQuery 2.0.3 源码分析 回溯魔法 end()和pushStack()

    了解了jQuery对DOM进行遍历背后的工作机制,可以在编写代码时有意识地避免一些不必要的重复操作,从而提升代码的性能 从这章开始慢慢插入jQuery内部一系列工具方法的实现 关于jQuery对象的包 ...

  3. linux中oops信息的调试及栈回溯【转】

    本文转载自:http://blog.csdn.net/kangear/article/details/8217329 ========================================= ...

  4. Java数据结构之回溯算法的递归应用迷宫的路径问题

    一.简介 回溯法的基本思想是:对一个包括有很多结点,每个结点有若干个搜索分支的问题,把原问题分解为对若干个子问题求解的算法.当搜索到某个结点.发现无法再继续搜索下去时,就让搜索过程回溯(即退回)到该结 ...

  5. 回溯 DFS 深度优先搜索[待更新]

      首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权!   1.概念   回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别 ...

  6. 46. Permutations 回溯算法

    https://leetcode.com/problems/permutations/ 求数列的所有排列组合.思路很清晰,将后面每一个元素依次同第一个元素交换,然后递归求接下来的(n-1)个元素的全排 ...

  7. Js杂谈-正则的测试与回溯次数

    例子来源于<精通正则表达式(第三版)>这本书,我贴出来: 这里的NFA是正则的一种引擎,书中介绍了一共三种引擎:NFA,DFA和POSIX NFA.像一般我们常用的.NET,java.ut ...

  8. SDUT 1400 马的走法(回溯法)

    题目链接: 传送门 马的走法 Time Limit: 1000MS     Memory Limit: 65536K 题目描述 在一个4*5的棋盘上,马的初始位置坐标(纵 横)位置由键盘输入,求马能返 ...

  9. ACM/ICPC 之 最长公共子序列计数及其回溯算法(51Nod-1006(最长公共子序列))

    这道题被51Nod定为基础题(这要求有点高啊),我感觉应该可以算作一级或者二级题目,主要原因不是动态规划的状态转移方程的问题,而是需要理解最后的回溯算法. 题目大意:找到两个字符串中最长的子序列,子序 ...

随机推荐

  1. Storm概念理解

    组成: Topology是Storm里的最高抽象概念,相当于Hadoop里的MapReduce,Topology(流转换图)由Spouts和Bolts组成.Spout创建Stream,Stream由无 ...

  2. eclipse项目推送git

    引用:http://blog.csdn.net/zongzhankui/article/details/48653731

  3. C投票系统

  4. Redis实战——Redis的pub/Sub(订阅与发布)在java中的实现

    借鉴:https://blog.csdn.net/canot/article/details/51938955 1.什么是pub/sub Pub/Sub功能(means Publish, Subscr ...

  5. Git(一):Eclipse中配置Git

    在Eclipse中配置Git: 一,由于我使用的是新版本的eclipse j2ee 4.4默认集成git,所以不用手动安装git插件 二,Eclipse配置基础信息.Windows->Prefe ...

  6. Perl 获取时间函数

    Perl 时间日期 Perl中处理时间的函数有如下几种:    1.time() 函数:返回从1970年1月1日起累计的秒数    2.localtime() 函数:获取本地时区时间(多用这个)    ...

  7. Avro总结(RPC/序列化)

    Avro(读音类似于[ævrə])是Hadoop的一个子项目,由Hadoop的创始人Doug Cutting(也是Lucene,Nutch等项目的创始人,膜拜)牵头开发,当前最新版本1.3.3.Avr ...

  8. spring4-2-bean配置-5-bean的作用域

  9. freemaker 优缺点 及 应用配置

    通俗的讲,freemaker其实就是一个模板引擎.什么意思呢?——Java可以基于依赖库,然后在模板上进行数据更改(显示). 在模板中,您专注于如何呈现数据,而在模板外(后台业务代码),您将专注于呈现 ...

  10. OpenCV之设计模式

    参考资料: http://hahack.com/codes/opencv-and-mvc/ http://blog.csdn.net/yzhang6_10/article/details/508084 ...