hihocoder offer收割编程练习赛8 B 拆字游戏

思路:

模拟,dfs。

注意题目中的trick,输出一块的时候不要把其他块也输出了。

实现:

 1 #include <cstring>
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 char a[505][505];
 8 int n, m, minx, miny, maxx, maxy;
 9 bool vis[505][505], ok[505][505];
10 int dx[4] = { 0, 1, 0, -1 };
11 int dy[4] = { 1, 0, -1, 0 };
12 
13 void dfs(int x, int y)
14 {
15     ok[x][y] = vis[x][y] = true;
16     minx = min(x, minx);
17     miny = min(y, miny);
18     maxx = max(x, maxx);
19     maxy = max(y, maxy);
20     for (int i = 0; i < 4; i++)
21     {
22         int nx = x + dx[i];
23         int ny = y + dy[i];
24         if (nx >= 0 && nx < n && ny >= 0 && ny < m && !vis[nx][ny] && a[nx][ny] == '1')
25         {
26             dfs(nx, ny);
27         }
28     }
29 }
30 int main()
31 {
32     cin >> n >> m;
33     for (int i = 0; i < n; i++)
34     {
35         for (int j = 0; j < m; j++)
36         {
37             cin >> a[i][j];
38         }
39     }
40     for (int j = 0; j < m; j++)
41     {
42         for (int i = 0; i < n; i++)
43         {
44             if (!vis[i][j] && a[i][j] == '1')
45             {
46                 minx = maxx = i, miny = maxy = j;
47                 memset(ok, 0, sizeof(ok));
48                 dfs(i, j);
49                 cout << maxx - minx + 1 << " " << maxy - miny + 1 << endl;
50                 for (int j = minx; j <= maxx; j++)
51                 {
52                     for (int k = miny; k <= maxy; k++)
53                     {
54                         cout << ok[j][k];
55                     }
56                     cout << endl;
57                 }
58             }
59         }
60     }
61     return 0;
62 }

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux date 常用格式,5、总结Linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令...

COMMAND [OPTIONS...] [ARGUMENTS...]命名 [选项...] [参数...]echo命令功能&#xff1a;显示字符语法&#xff1a;echo [-neE] [字符串]选项&#xff1a;-E (默认)不支持 \ 解释功能-n 不自动换行-e 启用 \ 字符的解释功能显示变量echo "$VAR_NAME" 变量会替换&…

VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

编译mongodb-src-r2.2.2出现以下问题LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏这个是由于日志文件引起的&#xff0c;可以将项目\属性\配置属性\清单工具\输入和输出\嵌入清单&#xff1a;原来是“是”&#xff0c;改成“否”。 或者将项目\属性\配置…

软件工程概论个人作业02(四则运算2)

1、设计思想&#xff1a; 在四则运算1的基础上&#xff0c;多加了几个要求&#xff0c;是否有乘除法可以通过不同的选择然随机生成符号的函数有时候生成两个数字对应加减&#xff0c;有时候生成四个数对应加减乘除&#xff1b;括号没有实现&#xff1b;数值范围通过一个函数实现…

linux下怎么将html换成pdf,如何在Linux上使用PHP将HTML/CSS转换为PDF

我一直试图将html页面转换为PDF&#xff0c;但没有任何运气&#xff0c;我尝试使用wkhtmltopdf(http://code.google.com/p/) wkhtmltopdf /)和虽然下面的命令在终端正确执行由相同的开发者(http://code.google.com/p/wkhtmltopdf/wiki/IntegrationWithPhp)中提供的PHP类&#x…

javascript 类型及类型判断

js中的类型&#xff1a; 标准类型&#xff1a;Number、String、Boolean、Null、Undefined 内置对象类型&#xff1a;Function、Array、Date、RegExp、Math、JSON... 类型识别&#xff1a; 1、typeof&#xff1a; 可以识别标准类型&#xff08;Null、Undefined除外&#xf…

linux的yum详解,Linux之YUM 详解

一、yum是什么yum Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理大量系统的更新问题二、yum 的运用格式及常用参数yum [option] "包名"有些记不住的包名 可以使用通配符* 来一次安装多个前端一直的软…

windows 8 安装iis .net 3.5

安装iis要一部分一部分点&#xff08;有些是需要更新包的&#xff09;.net 3.5安装1.将Win8镜像加载到虚拟光驱&#xff1b;或者将 win8 刻录好的光盘插入光驱&#xff1b;2.使用Windows键X,调出命令菜单&#xff0c;选择 命令提示符(管理员)&#xff1b;3.敲入如下命令&#x…

tableview直接滚动至最后一行

类似聊天界面&#xff0c;tableview应该直接显示在最后一行&#xff0c;并且不应该有滚动的出现。 在网上查了很久&#xff0c;直接滚动至最后一行很容易实现&#xff0c;有两种方法比较好。 1. 调用scrollToRowAtIndexPath方法 -(void) scrollBottom{if ([self.messageData co…

c语言两个字符串比较,将两个字符串s1和s2比较,如果s1s2,数组编程:将2个字符串s1和s2比较。若s1s2输出1;若s1=s2,输出0;若s1s2,输出-1(不能用strcmp函数)...

满意答案zxd8611032014.04.15采纳率&#xff1a;55% 等级&#xff1a;9已帮助&#xff1a;563人#include<iostream.h>#include<string.h>int min(int a,int b){return ((a<b)?a:b);}void main(){char a[1000],b[1000];int lena,lenb,i,t,res,flag0;cin>&…

鼠标问题:鼠标拖拽不灵敏,准备复制拖动的半截就断了

解决办法&#xff1a;清理一下鼠标下部激光感应的地方&#xff0c;还不行就得换一个试试了。

在线高清大图发布

ImageBrowser 解决了任意大小的在线高清大图的快速发布与显示&#xff0c;支持tif、jpg、png、bmp等多种图片格式&#xff0c;能够快速更新索引、跨平台部署和支持二次开发&#xff0c;可以在任何网站下调用和显示。可广泛应用于摄影、车展、古玩拍卖、建筑工程等领域。 实例地…

c语言函数调用参数调用的太少,浅谈C语言函数调用参数压栈的相关问题

参数入栈的顺序以前在面试中被人问到这样的问题&#xff0c;函数调用的时候&#xff0c;参数入栈的顺序是从左向右&#xff0c;还是从右向左。参数的入栈顺序主要看调用方式&#xff0c;一般来说&#xff0c;__cdecl 和__stdcall 都是参数从右到左入栈。看下面的代码&#xff1…

adobe reader(PDF)数字证书添加

编辑——首选项——签名 ——身份与可信任证书里的“更多”——添加身份证 ——选择我现有的数字身份认证来自文件——选择文件输入密码确认即可也可以采用添加系统证书的方式&#xff0c;双击证书一直下一步即可&#xff0c;系统自动将证书存入系统中。此方法也适用于福昕等阅…

c语言编写期末考试成绩,C语言期末考试卷(A卷含答案).doc

C语言期末考试卷(A卷含答案)桂林电子科技大学信息科技学院试卷2011-2012 学年第 2 学期 课号 I04BT014 课程名称 C语言程序设计 (A卷;、闭卷) 适用班级(或年级、专业) 11级、全院 考试时间 120 分钟 班级 学号 姓名 题 号一二三四五六七八九十成绩满 分403030 100得 分 评卷人 …

self

# 定义一个类class Animal:# 方法def setName(self, name):self.name namedef printName(self):print (名字为:, self.name)# 定义一个函数def myPrint(animalName):animalName.printName() dog1 Animal()dog1.setName(西西)myPrint(dog1)dog2 Animal()dog2.setName(北北)my…