HDU 3368 Reversi (暴力,DFS)
题意:给定一个8*8的棋盘,然后要懂黑白棋,现在是黑棋走了,问你放一个黑子,最多能翻白子多少个。
析:我是这么想的,反正才是8*8的棋盘,那么就暴吧,反正不会超时,把每一个格能暴力的都暴力,无非是上,下,左,右,左上,左下,右上,右下,
然后都试试就好了。不过懂点黑白棋的还是好做一点。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <algorithm> using namespace std;
const int maxn = 10 + 5;
const int dr[] = {0, 0, 1, -1, 1, -1, -1, 1};
const int dc[] = {1, -1, 1, -1, -1, 1, 0, 0};
char s[maxn][maxn];
int vis[maxn][maxn]; int dfs(int x, int y, int r, int c){
int xx = r + x;
int yy = c + y;
if(xx < 0 || yy < 0 || xx > 7 || yy > 7) return 0;
vis[x][y] = 1;
if(s[xx][yy] == 'D' || s[xx][yy] == '*') return 0;
if(s[xx][yy] == 'L' && !vis[xx][yy]) return 1 + dfs(xx, yy, r, c);
else if(s[xx][yy] == 'L' && vis[xx][yy]) return dfs(xx, yy, r, c);
return 0;
} int main(){
int n;
cin >> n; for(int kase = 1; kase <= n; ++kase){
memset(vis, 0, sizeof(vis));
// int ans = 0;
for(int i = 0; i < 8; ++i)
scanf("%s", s[i]);
int ans = 0; for(int i = 0; i < 8; ++i){
for(int j = 0; j < 8; ++j){
int cnt = 0;
memset(vis, 0, sizeof(vis));
if(s[i][j] == '*'){ for(int k = 0; k < 8; ++k){
int xx = i, yy = j;
bool ok = false;
while(xx >= 0 && xx < 8 && yy >= 0 && yy < 8){
if(s[xx][yy] == 'D'){ ok = true; break; }
xx += dr[k];
yy += dc[k];
if(s[xx][yy] == '*') break;
}
if(ok){ cnt += dfs(i, j, dr[k], dc[k]); } }
}
ans = max(ans, cnt);
}
} printf("Case %d: %d\n", kase, ans);
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std;
const int maxn = 200 + 5;
const int dr[] = {0, 0, 1, -1, 1, -1, -1, 1};
const int dc[] = {1, -1, 1, -1, -1, 1, 0, 0};
char s[10][10]; int dfs(int i, int j, int r, int c){
if(i < 0 || j < 0 || i > 7 || j > 8) return -1000;
else if(s[i][j] == '*') return -1000;
else if(s[i][j] == 'D') return 0;
else return 1 + dfs(i+r, c+j, r, c);
} int main(){
int T;
cin >> T;
for(int kase = 1; kase <= T; ++kase){
for(int i = 0; i < 8; ++i)
scanf("%s", s[i]);
int ans = 0;
for(int i = 0; i < 8; ++i)
for(int j = 0; j < 8; ++j)
if(s[i][j] == '*'){
int cnt = 0;
for(int k = 0; k < 8; ++k)
cnt += max(0, dfs(i+dr[k], j+dc[k], dr[k], dc[k]));
ans = max(ans, cnt);
} printf("Case %d: %d\n", kase, ans); }
return 0;
}
HDU 3368 Reversi (暴力,DFS)的更多相关文章
- HDU 3368 Reversi
http://acm.hdu.edu.cn/showproblem.php?pid=3368 题意:模拟黑白棋,下一步黑手最大可以转化多少个白旗 分析:暴力 原先的思路是找到D然后遍历其八个方向,直到 ...
- hihoCoder 1185 连通性·三(Tarjan缩点+暴力DFS)
#1185 : 连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出 ...
- Strange Country II 暴力dfs
这题点的个数(<=50)有限, 所以可以纯暴力DFS去搜索 //#pragma comment(linker, "/STACK:16777216") //for c++ Co ...
- HDU 1269 迷宫城堡(DFS)
迷宫城堡 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的 ...
- HDU 1045 Fire Net(DFS)
Fire Net Problem Description Suppose that we have a square city with straight streets. A map of a ci ...
- HDU - 5877 Weak Pair (dfs+树状数组)
题目链接:Weak Pair 题意: 给出一颗有根树,如果有一对u,v,如果满足u是v的父节点且vec[u]×vec[v]<=k,则称这对结点是虚弱的,问这棵树中有几对虚弱的结点. 题解: 刚开 ...
- HDOJ(HDU).2660 Accepted Necklace (DFS)
HDOJ(HDU).2660 Accepted Necklace (DFS) 点我挑战题目 题意分析 给出一些石头,这些石头都有自身的价值和重量.现在要求从这些石头中选K个石头,求出重量不超过W的这些 ...
- HDOJ(HDU).1045 Fire Net (DFS)
HDOJ(HDU).1045 Fire Net [从零开始DFS(7)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HD ...
- HDOJ(HDU).1241 Oil Deposits(DFS)
HDOJ(HDU).1241 Oil Deposits(DFS) [从零开始DFS(5)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
随机推荐
- PHP实现同服务器多个二级域名共享 SESSion
现在很多分类信息网站都会分出很多个二级域名出来,比如:sh.ganji.com(上海赶集网), su.ganji.com(苏州赶集网)等等,像这种拥有多个二级域名的网站,该如何实现同步共享sessio ...
- Python 字典 列表 嵌套 复杂排序大全
https://blog.csdn.net/ray_up/article/details/42084863 一: 字典排序 解析: 使用sorted 方法, 排序后的结果为一个元组. 可以字符串排序( ...
- python一个简单的web服务器和客户端
服务器: 当客户联系时创建一个连接套接字 从这个连接接收HTTP请求(*) 解释该请求所请求的特定文件 从服务器的文件系统获取该文件 并发送文件内容 ...
- mongodb配置和基本操作
MongoDB3.0新特性WiredTigerMMAPv1可插拔引擎API基于web的可视化管理工具 查看版本号mongod --version启动数据库 mongod --dbpath $dbpat ...
- 蓝桥杯 基础练习 BASIC-30 阶乘计算
基础练习 阶乘计算 时间限制:1.0s 内存限制:512.0MB 问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*…*n. 算法描述 n!可能很大,而计算机能表示的整数范围有 ...
- ES之四、Elasticsearch集群和索引常用命令
REST API用途 elasticsearch支持多种通讯,其中包括http请求响应服务,因此通过curl命令,可以发送http请求,并得到json返回内容. ES提供了很多全面的API,常用的RE ...
- 1099 Build A Binary Search Tree
1099 Build A Binary Search Tree (30)(30 分) A Binary Search Tree (BST) is recursively defined as a bi ...
- Linux学习笔记 -- 系统目录结构
以root用户登录系统后,在当前命令窗口下输入命令: ls / 我们可以看到目录结构类似下图: 树状目录结构可以表示为: 解析: /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令 ...
- 四道腾讯的javascript面试题
今天整理自己的文件夹时,发现了曾经面试腾讯实习生时的被问挂了的面试题,我将它们整理好了供大家借鉴.当时要求的是手写代码.汗啊,我那时弱爆了! 1,将给定数组转换为一个随机数组 Array.protot ...
- stm32中断 抢占优先级 和 响应优先级 有什么区别
与51不同,stm32的中断分类更灵活.51只是按先后顺序大小排列互相打断. stm32中多了响应优先级这一概念. stm32的中断分为 1.抢占(占先)优先级. 2.响应优先级. 1.抢占优先级.抢 ...