紫书搜索 习题7-10 UVA
来源:互联网 发布:佳明软件下载 编辑:程序博客网 时间:2024/04/18 16:13
题目链接:
https://vjudge.net/problem/UVA-11214
题意:
给出m*n棋盘上的目标点,求最少用几个皇后可以守卫所有目标点。
题解:
类似八皇后做法,2维数组标记行、列、主对角线、副对角线。
代码:
#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst int INF = 0x3f3f3f3f;const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//////////////////////////////////////////////////////////////////////////const int maxn = 1e5+10;int n,m,maxd;int tag[15][15];int vis[4][30];bool ok(){ for(int i=0; i<n; i++) for(int j=0; j<m; j++){ if(tag[i][j] && !vis[0][i] && !vis[1][j] && !vis[2][i+j] && !vis[3][i-j+n]) return false; } return true;}bool dfs(int d,int cur){ if(d == maxd){ if(ok()) return true; return false; } for(int pos=cur; pos<n*m; pos++){ int r = pos/m, c = pos%m; int t1 = vis[0][r], t2 = vis[1][c], t3 = vis[2][r+c], t4 = vis[3][r-c+n]; vis[0][r] = vis[1][c] = vis[2][r+c] = vis[3][r-c+n] = 1; if(dfs(d+1,pos+1)) return true; vis[0][r]=t1, vis[1][c]=t2, vis[2][r+c]=t3, vis[3][r-c+n]=t4; } return false;}int main(){ int cas = 0; while(scanf("%d",&n) && n){ scanf("%d",&m); MS(tag); MS(vis); char c; for(int i=0; i<n; i++) for(int j=0; j<m; j++){ scanf(" %c",& c); if(c == 'X'){ tag[i][j] = 1; } } for(maxd=1; ; maxd++){ if(dfs(0,0)){ printf("Case %d: %d\n",++cas,maxd); break; } } } return 0;}
0 0
- 紫书搜索 习题7-10 UVA
- 紫书搜索 习题7-7 UVA
- 紫书搜索 习题7-1 UVA
- 紫书搜索 习题7-2 UVA
- 紫书搜索 习题7-3 UVA
- 紫书搜索 习题7-4 UVA
- 紫书搜索 习题7-6 UVA
- 紫书搜索 习题7-8 UVA
- 紫书搜索 例题7-10 UVA
- 习题7-10 UVA 11214 Guarding the Chessboard (迭代加深搜索)
- 紫书习题 7-1 UVa 208 (爆搜加剪枝)
- 紫书搜索 例题7-4 UVA
- 紫书搜索 例题7-5 UVA
- 紫书搜索 例题7-6 UVA
- 紫书搜索 例题7-9 UVA
- 紫书搜索 例题7-12 UVA
- 紫书搜索 例题7-13 UVA
- UVA 10118 紫书习题9—2
- 腾讯云安全-云鼎实验室:黑客是如何实现数据库勒索的
- Caffe学习系列(8):solver优化方法
- 如何对Andrioid进行单元测试
- 域名的优化
- JPA的Embeddable注解
- 紫书搜索 习题7-10 UVA
- 解决小程序中Data.parse()获取时间戳IOS不兼容
- 组合数
- OpenGL概述
- 编译器的工作过程
- golang线程同步WaitGroup简介
- 射频识别技术漫谈(12)——三次相互认证
- webpack 浅析 --命令行安装编译
- 用C#和SQL实现课程信息管理系统(华工软院复试题练习)