hdu 6113 度度熊的01世界【搜索好题】
来源:互联网 发布:网络直播怎么赚钱的 编辑:程序博客网 时间:2024/05/16 05:19
题目
http://acm.hdu.edu.cn/showproblem.php?pid=6113
题意
Problem Description
度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成。
现在给你一个n*m的图像,你需要分辨他究竟是0,还是1,或者两者均不是。
图像0的定义:存在1字符且1字符只能是由一个连通块组成,存在且仅存在一个由0字符组成的连通块完全被1所包围。
图像1的定义:存在1字符且1字符只能是由一个连通块组成,不存在任何0字符组成的连通块被1所完全包围。
连通的含义是,只要连续两个方块有公共边,就看做是连通。
完全包围的意思是,该连通块不与边界相接触。
Input
本题包含若干组测试数据。
每组测试数据包含:
第一行两个整数n,m表示图像的长与宽。
接下来n行m列将会是只有01组成的字符画。
满足1<=n,m<=100
Output
如果这个图是1的话,输出1;如果是0的话,输出0,都不是输出-1。
分析
有个很有技巧的做法,把图扩一圈,然后再找。
如果0的连通块数量是2,1的连通块数量是1,那么图形就是0
如果0的连通块数量是1,1的连通块数量是1,那么图形就是1
否则是输出-1
代码
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <string>#include <vector>#include <queue>#include <map>#include <set>#include <cmath>using namespace std;const int N=105;int d[][2]={{-1,0},{1,0},{0,-1},{0,1}};int vis[N][N];char s[N][N];int n,m;void dfs(int x,int y,int c){ vis[x][y]=1; for(int i=0;i<4;i++){ int xx=x+d[i][0],yy=y+d[i][1]; if(xx>=0&&yy>=0&&xx<=n&&yy<=m&&s[xx][yy]==c&&!vis[xx][yy])dfs(xx,yy,c); }}int main(){ while(~scanf("%d%d",&n,&m)){ memset(s,0,sizeof(s)); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++)scanf("%s",s[i]+1); n++,m++; for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)if(s[i][j]==0)s[i][j]='0'; int cnt1=0,cnt0=0; for(int i=0;i<=n;i++){ for(int j=0;j<=m;j++){ if(s[i][j]=='1'&&!vis[i][j]){ dfs(i,j,'1'); cnt1++; } if(s[i][j]=='0'&&!vis[i][j]){ dfs(i,j,'0'); cnt0++; } } } int ans=-1; if(cnt0==2&&cnt1==1)ans=0; else if(cnt0==1&&cnt1==1)ans=1; printf("%d\n",ans ); } return 0;}
阅读全文
0 0
- hdu 6113 度度熊的01世界【搜索好题】
- HDU 6113 度度熊的01世界【搜索】
- HDU 6113 度度熊的01世界【2017"百度之星"】【简单搜索判断联通块】
- 【HDU 6113 度度熊的01世界 】 & DFS
- HDU 6113 度度熊的01世界 dfs
- hdu 6113 度度熊的01世界
- HDU-6113 度度熊的01世界
- hdu 6113 度度熊的01世界
- hdu 6113 度度熊的01世界
- 【dfs】hdu 6113 度度熊的01世界
- hdu 6113 度度熊的01世界
- HDU 6113 度度熊的01世界 (DFS
- hdu 1226 搜索好题 帅呆了的题目
- hdu 6113 度度熊的01世界/2017 百度之星
- HDU 6113 度度熊的01世界(dfs)
- HDU 6113 度度熊的01世界 (暴力dfs)
- HDU -- 6113 度度熊的01世界 【搜联通块 + 思维】
- 刷题——HDU 6113 度度熊的01世界
- 码云
- 1401 Factorial
- 数据库的优化策略
- 浅谈存在与信念
- Spring声明式事务管理(基于注解方式实现)
- hdu 6113 度度熊的01世界【搜索好题】
- 【LeetCode】005 Longest Palindromic Substring 最长的回文子字符串
- vim命令与设置行号
- android打开飞行模式-用adb命令控制飞行模式开关
- angular中的路由 ng-router vs ui.router
- Proguard/DexGuard混淆应用
- demo1,控制div属性,总结
- weui上传、预览和删除图片
- java 批量添加数据