当前位置: 首页 > news >正文

hihocoder offer收割编程练习赛12 C 矩形分割

思路:

模拟,深搜。

实现:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <string>
 4 using namespace std;
 5 
 6 const int dx[4] = { 0, 1, 0, -1 };
 7 const int dy[4] = { -1, 0, 1, 0 };
 8 
 9 int n, m, cnt = 0;
10 int a[305][305];
11 bool vis[305][305];
12 
13 void dfs(int x, int y)
14 {
15     vis[x][y] = true;
16     for (int i = 0; i < 4; i++)
17     {
18         int nx = x + dx[i];
19         int ny = y + dy[i];
20         if (nx >= 0 && nx < 3 * n && ny >= 0 && ny < 3 * m && !a[nx][ny] && !vis[nx][ny])
21         {
22             dfs(nx, ny);
23         }
24     }
25 }
26 
27 int main()
28 {
29     scanf("%d %d", &n, &m);
30     getchar();
31     for (int i = 0; i < n; i++)
32     {
33         for (int j = 0; j < m; j++)
34         {
35             char c = getchar();
36             if (c == '/')
37             {
38                 a[3 * i][3 * j] = 0;
39                 a[3 * i][3 * j + 1] = 0;
40                 a[3 * i][3 * j + 2] = 1;
41                 a[3 * i + 1][3 * j] = 0;
42                 a[3 * i + 1][3 * j + 1] = 1;
43                 a[3 * i + 1][3 * j + 2] = 0;
44                 a[3 * i + 2][3 * j] = 1;
45                 a[3 * i + 2][3 * j + 1] = 0;
46                 a[3 * i + 2][3 * j + 2] = 0;
47             }
48             else if (c == '\\')
49             {
50                 a[3 * i][3 * j] = 1;
51                 a[3 * i][3 * j + 1] = 0;
52                 a[3 * i][3 * j + 2] = 0;
53                 a[3 * i + 1][3 * j] = 0;
54                 a[3 * i + 1][3 * j + 1] = 1;
55                 a[3 * i + 1][3 * j + 2] = 0;
56                 a[3 * i + 2][3 * j] = 0;
57                 a[3 * i + 2][3 * j + 1] = 0;
58                 a[3 * i + 2][3 * j + 2] = 1;
59             }
60         }
61         getchar();
62     }
63 
64     for (int i = 0; i < 3 * n; i++)
65     {
66         for (int j = 0; j < 3 * m; j++)
67         {
68             if (!a[i][j] && !vis[i][j])
69             {
70                 dfs(i, j);
71                 cnt++;
72             }
73         }
74     }
75     cout << cnt << endl;
76     return 0;
77 }

 

转载于:https://www.cnblogs.com/wangyiming/p/6659080.html

相关文章:

  • css 样式表 基础 样式
  • 函数装饰器
  • 第二百一十节,jQuery EasyUI,SearchBox(搜索框)组件
  • UVa 10917 林中漫步
  • Ruby 写文件
  • Python学习日记之读取中文目录
  • STL List::sort() 解析
  • 饥饿鲨鱼进化-破解篇
  • 内存操作函数memcpy和memmove详解
  • 【原】STM32的USART与SPI是可以直接通讯
  • django自定义signal的发送和接收样例
  • MVC开发中的常见错误-07-“System.IO.DirectoryNotFoundException”类型的未经处理的异常在 mscorlib.dll 中发生...
  • 你必须要了解的几种排序方法
  • 补交 作业二:个人博客作业内容:需求分析
  • poj-1741 (点分治模板)
  • 收藏网友的 源程序下载网
  • 【mysql】环境安装、服务启动、密码设置
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【译】理解JavaScript:new 关键字
  • Android Studio:GIT提交项目到远程仓库
  • AWS实战 - 利用IAM对S3做访问控制
  • JavaScript的使用你知道几种?(上)
  • JAVA多线程机制解析-volatilesynchronized
  • PAT A1120
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Spring Boot快速入门(一):Hello Spring Boot
  • Spring声明式事务管理之一:五大属性分析
  • 关于springcloud Gateway中的限流
  • 机器学习中为什么要做归一化normalization
  • 力扣(LeetCode)22
  • 目录与文件属性:编写ls
  • 前端面试之CSS3新特性
  • 一天一个设计模式之JS实现——适配器模式
  • 原生Ajax
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • #define
  • #QT(一种朴素的计算器实现方法)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (+4)2.2UML建模图
  • (06)金属布线——为半导体注入生命的连接
  • (2.2w字)前端单元测试之Jest详解篇
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (TOJ2804)Even? Odd?
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ***通过什么方式***网吧
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .java 9 找不到符号_java找不到符号
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET分布式缓存Memcached从入门到实战
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @Autowired多个相同类型bean装配问题