UVA 639 - Don't Get Rooked(深搜)

如何设计一个低代码平台 近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢? 阅读详情

Don't Get Rooked 

In chess, the rook is a piece that can move any number of squares vertically or horizontally. In this problem we will consider small chess boards (at most 4$\times$4) that can also contain walls through which rooks cannot move. The goal is to place as many rooks on a board as possible so that no two can capture each other. A configuration of rooks is legal provided that no two rooks are on the same horizontal row or vertical column unless there is at least one wall separating them.


The following image shows five pictures of the same board. The first picture is the empty board, the second and third pictures show legal configurations, and the fourth and fifth pictures show illegal configurations. For this board, the maximum number of rooks in a legal configuration is 5; the second picture shows one way to do it, but there are several other ways.

Your task is to write a program that, given a description of a board, calculates the maximum number of rooks that can be placed on the board in a legal configuration.

Input 

The input file contains one or more board descriptions, followed by a line containing the number 0 that signals the end of the file. Each board description begins with a line containing a positive integer n that is the size of the board; n will be at most 4. The next n lines each describe one row of the board, with a `.' indicating an open space and an uppercase `X' indicating a wall. There are no spaces in the input file.

Output 

For each test case, output one line containing the maximum number of rooks that can be placed on the board in a legal configuration.

Sample Input 

4
.X..
....
XX..
....
2
XX
.X
3
.X.
X.X
.X.
3
...
.XX
.XX
4
....
....
....
....
0

Sample Output 

5
1
5
2
4

==============================

从每一个可以放置的位置开始深搜


#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

int n,maxans;
char map[10][10],vis[10][10];

bool check(int x, int y)
{
    if(vis[x][y]==-1||vis[x][y]==1) return 0;
    for(int i=x+1;i<=n&&map[i][y]!='X';i++)
        if(vis[i][y]==-1)
            return 0;
    for(int i=x-1;i>=1&&map[i][y]!='X';i--)
        if(vis[i][y]==-1)
            return 0;
    for(int i=y+1;i<=n&&map[x][i]!='X';i++)
        if(vis[x][i]==-1)
            return 0;
    for (int i=y-1;i>=1&&map[x][i]!='X';i--)
        if(vis[x][i]==-1)
            return 0;
    return 1;
}

void dfs(int ans)
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(check(i,j))
            {
                vis[i][j]=-1;
                dfs(ans+1);
                vis[i][j]=0;
            }
        }
    }
    if(maxans<ans)
    {
        maxans=ans;
    }
    return;
}

int main()
{
    while(~scanf("%d",&n))
    {
        if(n==0) break;
        maxans=-1;
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=n;i++)
        {
            scanf("%s",map[i]+1);
            for(int j=1;j<=n;j++)
            {
                if(map[i][j]=='X')
                    vis[i][j]=1;
            }
        }
        dfs(0);
        printf("%d\n",maxans);
    }
    return 0;
}


微信小程序爬虫终极指南:以电商小程序抓包与逆向分析为例(最新版) 在2026年的移动互联网生态中,微信小程序已经成为电商交易的核心载体之一。据统计,超过78%的头部电商平台都推出了微信小程序版本,其用户活跃度甚至超过原生App。对于数据从业者而言,小程序端往往藏着比Web端更丰富的接口数据——包括但不限于商品详情、价格波动、用户评价、库存变化、秒杀活动信息等。与传统的Web爬虫不同,微信小程序爬虫面临着三大核心挑战无URL地址栏:无法通过浏览器直接查看网络请求wx.request封装:所有请求均通过微信原生API发起,难以直接拦截然而, 阅读详情

相关推荐

STM32驱动数码管:从硬件连接到动态显示实现

本文详细介绍了使用STM32单片机驱动数码管的完整流程,从硬件连接到软件实现。内容涵盖共阳/共阴数码管原理、GPIO配置、段码表生成,并重点解析了多位数码管动态显示的核心技术,包括动态扫描原理、消影处理及实战代码,帮助开发者快速掌握这一嵌入式开发基础技能。

p5l2m9n4o6q的博客 575

UVA 639 Don't Get Rooked

UVA-639题意:给出一个地图,x为障碍物。可以放置一些喷火器(?),可以攻击和它同行同列的东西,攻击会被x障碍物阻隔。求在这个地图上可以放多少个喷火器。 解题思路:因为地图很小,暴力枚举每个点能不能放,放下去之后对它所在的行列的可攻击范围内的计数的pd[i][j]++。只有pd[i][j]==0 的点才可以放。/*****************************************

QzNarsh的博客 335

SAR ADC设计——SAR Logic原理

SAR ADC设计——SAR Logic原理 参考:集成电路设计实践 SAR ADC 清华大学 李福乐 文章目录SAR ADC设计——SAR Logic原理一. Overview二. TSPC(True Single Phase Clock)三. SC_Gen(Sequential Control Generator)四. LATCH_Dynamic五. 时序控制逻辑总结六. SW产生七. DO产生八. GT产生九. SAR Logic模块总结 一. Overview 输入:CKC,CompB,SAMPL

夏风喃喃的博客 1万+

UVA 639 Don't Get Rooked

UVA_639 这个题目可以先将横向相连的“.”看作一个块,并记录下块开始和结束的坐标,每个块中只能放一个rook。 之后便顺序枚举每种方案并判断rook是否可以放在假设的位置,如果可以就继续深搜。当搜完搜有的块之后,就可以比较放置的rook总数与ans了,如果比ans大,则更新ans的值。 #include&lt;stdio.h&gt;#include&lt;string.h&gt;i...

weixin_33834628的博客 87

黑金ZYNQ7010开发板开箱实测:从接线到串口通信的保姆级指南

本文提供黑金ZYNQ7010开发板从开箱到串口通信的完整实操指南。详细介绍了硬件连接、驱动安装、启动模式设置及串口终端配置等关键步骤,并针对常见问题提供排查思路,帮助FPGA开发者快速上手ZYNQ平台,建立稳定的调试通道。

weixin_29266749的博客 466

Diffusion Model进阶解析:从SDE到概率流ODE的连续化生成建模

本文深入解析了Diffusion Model的连续化生成建模,从离散DDPM和SGM模型引入,阐述了采用随机微分方程(SDE)统一视角的必要性与优势。文章详细拆解了SDE的构成,揭示了其如何统一描述扩散过程,并重点介绍了逆向SDE与确定性的概率流ODE,后者为高效、确定的图像生成提供了理论基础。最后,文章对比了朗之万动力学、数值SDE求解器和数值ODE求解器(如DPM-Solver)等主流采样方法的实战应用与选择策略。

weixin_29099217的博客 437

UVA 639 (13.08.25)

Don't Get Rooked In chess, the rook is a piece that can move any number of squaresvertically or horizontally. In this problem we will consider smallchess boards (at most 44) that can also...

445822357 175

11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南

本文介绍了如何使用 LangGraph 构建生产级 AI Agent,重点解析了 LangGraph 的核心设计、节点与边的实现方法论、生产级实现技巧以及性能优化策略。LangGraph 通过图结构抽象复杂 AI 工作流,核心组件包括节点、边、状态和检查点。节点通过 Python 函数封装原子业务逻辑,边通过条件分支实现动态工作流。生产级实现技巧包括状态管理、多会话控制和错误处理机制。性能优化策略涉及并行执行和缓存机制设计。文章还提供了旅行规划 Agent 的实战案例和常见问题解决方案,帮助开发者构建高效、

yonggeit的博客 3268

UVa 639 放车问题

题意:给定一个 n x n 的棋盘,在上面放置车。其中.号表示可放置,X表示墙。在同一行或同一列的两个车,如果它们之间没有X墙挡着,则是不合法的放置。给定一棋盘,最多可以放置车的数量。 思路:枚举所有的格子,看是否可以在此放置。每次放一个车后,修改棋盘的横行、竖列直到X的位置为1,即不可放置。因为要修改棋盘,所以需拷贝一个过来,修改拷贝的。还有一些注意的,如注释,总感觉写得不是很简洁。 还有就

buxizhizhou530的专栏 872

CXSMILES细则-用于在 SMILES 字符串后存储分子的特殊特征

Chemaxon 扩展 SMILES/SMARTS 用于在 SMILES 字符串后存储分子的特殊特征。任何信息都可以存储在 SMILES 字符串后,只要它们由空格或制表符字符分隔,因为 SMILES 解析器会忽略这些信息,或者将它们作为注释使用。扩展特征以以下格式存储:Chemaxon 的扩展 SMILES/SMARTS 不包含非 ASCII 字符,它们通常以字符代码 n 的形式被转义为 &#n;。在 S-group 中,ASCII 字符“,”、“;”、“|”、“{”、“}”也以这种方式转义。此外,符号“$

ASKCOS博客 401

测试用例设计工具大盘点:总有一款适合你

本文旨在帮助测试工程师、开发人员及团队管理者快速了解主流测试用例设计工具的特点、适用场景和选择逻辑。覆盖工具类型包括传统文档工具、开源管理工具、商业集成平台及新兴AI工具,范围涵盖中小团队到大型企业的不同需求。本文从“测试用例设计的痛点”切入,用生活案例解释核心概念;接着按“工具类型”分类盘点主流工具(附优缺点对比表);再通过“小团队/中大型团队/敏捷团队”等真实场景教你选工具;最后展望AI等未来趋势,帮你“一次学透,终身受用”。

项目管理的博客 1590

uva639 暴力、回溯

题意: 在象棋中,“车”是可以在棋盘上沿着纵向或横向走任意格子的棋子。 在这个问题中,我们假设有一个4*4的小棋盘, 在这个棋盘上面包含着“墙”,而“车”是不能越过墙的。而我们的目标就是尽可能地放置更多地“车”到这个棋盘上去,使所有 的这些”车“互相不能吃到其它棋子。 在上面几副图中给出了几个样例, 棋盘上,格子全部是黑色的代表是“墙”, 黑色圆形的代表是“车”。 其中第二,三...

angchen2660的博客 165

[Unity3D]水族馆游戏教程四

文章目录0.接上篇1.速度控制器2.修改FishAI3.修改后的效果4.总结 0.接上篇 上一篇,实现了鱼AI的随机游动、自动转向,并且学习了如何分析调试过程中遇到的报错。 本篇将继续优化鱼AI。 1.速度控制器 上一篇虽然实现了鱼的随机游动,但是可以看到,鱼在转向的时候,会显得很突然。因此先要解决这个问题。 我们的思路是,让鱼在刚转向的时候,速度由慢到快,等到游动到快要到达目标点的时候,速度减慢...

延澈左的专栏 1039

UVa 639 Don't Get Rooked

/* coder: ACboy date: 2010-3-19 result: 1A description: UVa 639 Dont Get Rooked*/#include using namespace std;char chess[4][4];char tempChess[4][4];int everyPos[70000][16];i

个人独立博客http://www.acb0y.cn/ 1031

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

uva 639 Don't Get Rooked (暴力回溯 )

uva 639 Don't Get Rooked In chess, the rook is a piece that can move any number of squares vertically or horizontally. In this problem we will consider small chess boards (at most 44) tha

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 881

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

UVA - 639 - Don't Get Rooked (暴力回溯)

UVA - 639 Don't Get Rooked Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description In chess, the rook is a piece that

Never say never 1137

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

uva 639 Don't Get Rooked

题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=108&page=show_problem&problem=580 题目描述:  Don't Get Rooked  In chess, the rook is a

心之所向,无惧无悔! 860

POJ1315 UVA639 UVALive5325 Don't Get Rooked【DFS】

Don’t Get Rooked Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2631 Accepted: 1682 Description In chess, the rook is a piece that can move any number of squares vertically or horizontal...

海岛Blog 593

UVa 639 - Don't Get Rooked

类似“八皇后问题”,但加了“墙”的概念,如果有墙相隔,则同一行墙两边可同时存在两个元素。 枚举子集+判断可行性,在枚举子集时,可以进行适当剪枝,如此可以减少很多不必要的枚举,比如:当n == 4时,其最大的的“车”的位置为8个,则我们可以加一个计数器,最多将子集的枚举量设为8,超过8则不再往子集中加入元素。 代码如下: #include #include #include #inc

GooMaple 1188

uva 639 Don't Get Rooked ( 回溯 )

这道题确实是标准的回溯,果然还是早上比较清醒一些,昨天晚上想了好长一会儿都没有想起来,早上一会的功夫就A 了,估计也有昨天晚上的帮助。。。总感觉不想写太多私人的东西在这上面,因为这个是每个人都可以无条件访问的。。。 思路: 由于数据比较小,可以把每个元素都遍历一遍,回溯选择,最多4*4,还是很小的,我交的才1ms,1A。。 贴代码: #include #include #include

勿忘初心 1016

UVA639 Don't Get Rooked

UVA639 Don't Get Rooked 类似八皇后问题,不过中间多了障碍物。。 深搜回溯,标记放过的点,。然后利用标记的点进行判断能不能放入。 #include #include int n; char map[10][10]; int vis[10][10]; int max; void dfs(int num) { if (max < num

Remilia's 1148

UVA 639- Don't Get Rooked

In chess, the rook is a piece that can move any number of squares vertically or horizontally. In this problem we will consider small chess boards (at most 44) that can also contain walls through whi

小shan在努力~ 531

uva 639 - Don't Get Rooked

dfs 。用回朔 和八皇后差不多。不过多了木块格挡。即可以将两颗棋子放到木块的两侧。 每次放完一个棋子后,4个方向向前方标记,直到遇到格挡或者出棋盘。然后递归下一个可以放的。 记得递归出来后回朔,注意这个地方不能直接赋值为1作为标记,有可能两个棋子都可以攻击到这里。 所以每一个都加1,若为0的时候,则可以放。 #include #include const int MAXN=5; cha

catfish的专栏 486

UVa 639 & HOJ 1086 & POJ 1315 - Don't Get Rooked

传送门UVa 639 & HOJ 1086 & POJ 1315 - Don't Get Rooked 刚开始想用超级暴力法做,

一只冰熊 1274

UVA - 639 Don't Get Rooked (回溯)

Don't Get Rooked  In chess, the rook is a piece that can move any number of squaresvertically or horizontally. In this problem we will consider smallchess boards (at most 44) that can als

小G的ACM之路 824
上一篇: UVA 216 - Getting in Line
下一篇: UVA 539 - The Settlers of Catan(深搜 回溯)
coco430
博客等级 码龄14年 9粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值