题目链接: http://codeforces.com/problemset/problem/445/A

题解:

这道题是在现场赛的最后一分钟通过的,相当惊险,而且做的过程也很曲折。

先是用递推,结果发现递推下去可能会出现非法的情况(一开始还不知道,坚定不移地认为这种方法是对的。Now,what can I say?)

然后用回溯,就是类似在递推的方式下,如果遇到非法就退回上一步,有了改错的机会。结果,超时。也是,这种方法太暴力了。

最后想到:一个格子的与之相邻的格子(如果能涂色),其颜色必定不同。那么就可以先对一个格子涂上颜色,然后向四个方向扩散,这四个格子又继续扩散,直到不能扩散,访问过得要做个标记。

然而,师兄教的方法,让我不知该说些什么。

首先打个表格。

BWBWBW

WBWBWB

BWBWBW

WBWBWB

哪个位置是空的,就输出这个字符。抓住本质下手, 一针见血啊!

为什么我想不到,然后想的都是那么复杂的方法,还不一定正确。好好学习,好好学习。

下面是dfs的代码:

 #include<iostream>//F - DZY Loves Chessboard CodeForces - 445A  dfs
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define LL long long
using namespace std; char a[][];
int vis[][];
int n,m; void dfs(int x, int y,int B)
{
if(x>n || x<) return;//判断是否越界或已经访问过
if(y>m || y<) return;
if(vis[x][y] || a[x][y]=='-') return; vis[x][y] = ;//涂色
if(B) a[x][y] = 'B';
else a[x][y] = 'W'; dfs(x,y+,!B);//四个方向都填相反的颜色
dfs(x,y-,!B);
dfs(x+,y,!B);
dfs(x-,y,!B);
} int main()
{
scanf("%d%d",&n,&m);
memset(a,,sizeof(a));
for(int i = ; i<=n; i++)
scanf("%s",a[i]+); //由于某些格子可能是封闭的,所以要逐个格子去判断是否还需要填色
for(int i = ; i<=n; i++)
for(int j = ; j<=m; j++)
{
if(a[i][j]=='-')
vis[i][j] = ; else if(!vis[i][j])
{
dfs(i,j,);
}
} for(int i = ; i<=n; i++)
puts(a[i]+);
return ;
}

Codeforces Round #254 (Div. 2) A. DZY Loves Chessboard —— dfs的更多相关文章

  1. [题解]Codeforces Round #254 (Div. 2) A - DZY Loves Chessboard

    链接:http://codeforces.com/contest/445/problem/A 描述:一个n*m的棋盘,有一些格子不能放棋子.现在把黑白棋子往上放,要求放满且相邻格子的棋子颜色不同.输出 ...

  2. Codeforces Round #254 (Div. 2) A DZY Loves Chessboard

    先生成nXm的BW棋盘 BWBWBWBW WBWBWBWB BWBWBWBW WBWBWBWB 类似上面交替变换 然后将输入为’-’的地方替换成‘-’即可 #include <iostream& ...

  3. Codeforces Round #254 (Div. 1) C. DZY Loves Colors 线段树

    题目链接: http://codeforces.com/problemset/problem/444/C J. DZY Loves Colors time limit per test:2 secon ...

  4. Codeforces Round #254 (Div. 1) D - DZY Loves Strings

    D - DZY Loves Strings 思路:感觉这种把询问按大小分成两类解决的问题都很不好想.. https://codeforces.com/blog/entry/12959 题解说得很清楚啦 ...

  5. Codeforces Round #254 (Div. 1) D. DZY Loves Strings hash 暴力

    D. DZY Loves Strings 题目连接: http://codeforces.com/contest/444/problem/D Description DZY loves strings ...

  6. Codeforces Round #254 (Div. 1) C. DZY Loves Colors 分块

    C. DZY Loves Colors 题目连接: http://codeforces.com/contest/444/problem/C Description DZY loves colors, ...

  7. Codeforces Round #254 (Div. 1) A. DZY Loves Physics 智力题

    A. DZY Loves Physics 题目连接: http://codeforces.com/contest/444/problem/A Description DZY loves Physics ...

  8. Codeforces Round #254 (Div. 2)B. DZY Loves Chemistry

    B. DZY Loves Chemistry time limit per test 1 second memory limit per test 256 megabytes input standa ...

  9. Codeforces Round #254 (Div. 1) C DZY Loves Colors

    http://codeforces.com/contest/444/problem/C 题意:给出一个数组,初始时每个值从1--n分别是1--n.  然后两种操作. 1:操作 a.b内的数字是a,b内 ...

随机推荐

  1. Codeforces Round #321 (Div. 2) Kefa and Company 二分

    原题链接:http://codeforces.com/contest/580/problem/B 题意: 给你一个集合,集合中的每个元素有两个属性,$m_i,s_i$,让你求个子集合,使得集合中的最大 ...

  2. CodeChef - RIN Course Selection

    Read problems statements in Mandarin Chineseand Russian. Rin is attending a university. She has M se ...

  3. Ext 上传文件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title> ...

  4. javascript 对象初探 (六)--- call()和apply()初探

    在javascript中,每个函数都具有call()和apply()两个方法,您可以用她们来触发函数,并指定相关的调用参数. 此外,这两个方法还有另一个功能,就是她可以让一个对象去‘借用‘另一个对象的 ...

  5. javascript对象初探 (五)--- 函数对象的属性

    与其他对象相同的是,函数对象中也有一个叫做constructor的属性,其引用就是Function()这个构造函数. function her(a){ return a; } console.log( ...

  6. 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”

    首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用. 通常,在模块的头文件中对本模块提供给其它模块 ...

  7. vue2.0 + vux (五)api接口封装 及 首页 轮播图制作

    1.安装 jquery 和 whatwg-fetch (优雅的异步请求API) npm install jquery --save npm install whatwg-fetch --save 2. ...

  8. Android 扫描Scard卡全部的图片

    这几天为了扫描Scard卡全部的图片的事非常纠结,我原本以为这是一件非常easy的事.可是我发现我错了.网上也没有完整的代码.仅仅是零零碎碎的能扫描单个文件的代码.在今天代码调试通过之后,我认为我有必 ...

  9. 内核顶层Makefile相关1

    http://www.groad.net/bbs/simple/?f104.htm $(Q) 变量 内核 Makefile 文件 238 行到 259 行的注释中知道,$(Q) 变量的作用是决定是否在 ...

  10. FPGA机器学习之机器学习的n中算法总结1

    机器学习是AI领域的重要一门学科.前面我描写叙述过.我计划从事的方向是视觉相关的机器学习分类识别,所以可能在每一个算法的分析中,仅仅增加在视频.视觉领域的作用. 我毛华望QQ849886241.技术博 ...