思路:

模拟,深搜。

实现:

 #include <iostream>
#include <cstdio>
#include <string>
using namespace std; const int dx[] = { , , , - };
const int dy[] = { -, , , }; int n, m, cnt = ;
int a[][];
bool vis[][]; void dfs(int x, int y)
{
vis[x][y] = true;
for (int i = ; i < ; i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
if (nx >= && nx < * n && ny >= && ny < * m && !a[nx][ny] && !vis[nx][ny])
{
dfs(nx, ny);
}
}
} int main()
{
scanf("%d %d", &n, &m);
getchar();
for (int i = ; i < n; i++)
{
for (int j = ; j < m; j++)
{
char c = getchar();
if (c == '/')
{
a[ * i][ * j] = ;
a[ * i][ * j + ] = ;
a[ * i][ * j + ] = ;
a[ * i + ][ * j] = ;
a[ * i + ][ * j + ] = ;
a[ * i + ][ * j + ] = ;
a[ * i + ][ * j] = ;
a[ * i + ][ * j + ] = ;
a[ * i + ][ * j + ] = ;
}
else if (c == '\\')
{
a[ * i][ * j] = ;
a[ * i][ * j + ] = ;
a[ * i][ * j + ] = ;
a[ * i + ][ * j] = ;
a[ * i + ][ * j + ] = ;
a[ * i + ][ * j + ] = ;
a[ * i + ][ * j] = ;
a[ * i + ][ * j + ] = ;
a[ * i + ][ * j + ] = ;
}
}
getchar();
} for (int i = ; i < * n; i++)
{
for (int j = ; j < * m; j++)
{
if (!a[i][j] && !vis[i][j])
{
dfs(i, j);
cnt++;
}
}
}
cout << cnt << endl;
return ;
}

hihocoder offer收割编程练习赛12 C 矩形分割的更多相关文章

  1. hihocoder [Offer收割]编程练习赛12 [1495] ---- 矩形分割

    原题链接 矩形分割 算法分析: 解决该题要用到"并查集"的思想. 这里有一篇不错的博客介绍并查集: 并查集(Union-Find)算法介绍 记 int total=N*M,这里会有 ...

  2. hihocoder [Offer收割]编程练习赛12 [1494] ---- 一面砖墙

    原题链接 一面砖墙 算法分析 设墙的宽度为 range,则需要统计横坐标为 1,2,3,4,...,range-1 处的墙缝数,取最大的墙缝数(记为maxCrevices),从该处划一道竖线,竖线穿过 ...

  3. hihocoder offer收割编程练习赛12 D 寻找最大值

    思路: 可能数据太水了,随便乱搞就过了. 实现: #include <iostream> #include <cstdio> #include <algorithm> ...

  4. hihocoder offer收割编程练习赛12 B 一面砖墙

    思路: 就是求哪个长度出现的次数最多. 实现: #include <iostream> #include <cstdio> #include <algorithm> ...

  5. hihocoder offer收割编程练习赛12 A 歌德巴赫猜想

    思路: 枚举. 实现: #include <iostream> #include <cstdio> #include <algorithm> using names ...

  6. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  7. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  8. 【[Offer收割]编程练习赛12 C】矩形分割

    [题目链接]:http://hihocoder.com/problemset/problem/1495 [题意] [题解] 把每个方块都再分成3*3的小块; 这样; 对于一个方块来说 如果是'\' 则 ...

  9. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

随机推荐

  1. MJRefresh实现刷新(使用它的Block方法)

    MJRefresh实现刷新(使用它的Block方法)   // // YFMVCPostListViewController.m // iOS122 // // Created by 颜风 on 15 ...

  2. windows内存管理的机制以及优缺点

    分页存储管理基本思想:用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等.可将用户程序的任一页放在内存的任一块中,实现了离散分配. 分段存储管 ...

  3. [Tue, 11 Aug 2015 ~ Mon, 17 Aug 2015] Deep Learning in arxiv

    Image Representations and New Domains inNeural Image Captioning we find that a state-of-theart neura ...

  4. iOS开发——高级篇——Runloop相关一

    一.什么是runLoop 1.说白了,runloop就是运行循环 2.runloop,他是多线程的法宝 通常来讲,一个线程一次只能执行一个任务,执行完之后就退出线程.但是,对于主线程是不能退出的,因此 ...

  5. POJ之01背包系列

    poj3624 Charm Bracelet 模板题 没有要求填满,所以初始化为0就行 #include<cstdio> #include<iostream> using na ...

  6. java8--IO(java疯狂讲义3复习笔记)

    产生文件 File file = new File("abc.txt"); if(!file.exists()){ System.out.println(file.exists() ...

  7. Enum的基本使用

    package enum_test; public enum Shrubbery { GROUND, CRAWLING, HANGING } package enum_test; public cla ...

  8. 3.5Linux设备驱动--块设备(一)之概念和框架☆☆

    基本概念   块设备(blockdevice) --- 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性 ...

  9. plink 与 ssh 远程登录问题

    plink 是一种 putty-tools,ubuntu 环境下,如果没有安装 plink,可通过如下方法进行安装: $ echo y | sudo apt-get install plink 1. ...

  10. BZOJ_1532_[POI2005]Kos-Dicing_二分+网络流

    BZOJ_1532_[POI2005]Kos-Dicing_二分+网络流 Description Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一 ...