NEUQOJ 1999: 三角形or四边形?【搜索联通块/模拟】
http://newoj.acmclub.cn/problems/1999
1999: 三角形or四边形?
题目描述:
JiangYu很无聊,所以他拿钉子在板子上戳出了一个由.#组成的10*10八联通点阵图。 请机智的你判断图中的#组成的是三角形还是四边形?
其中一种3 jiao *为
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . # . . . . .
. . . # . # . . . .
. . # . . . # . . .
. # . . . . . # . .
######### .
. . . . . . . . . .
. . . . . . . . . .
其中一种4 bian *为
. . . . . . . . . .
. . . . . . . . . .
. ########.
. # . . . . . . #.
. # . . . . . . #.
. # . . . . . . #.
. ########.
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
输入:
一个10*10点阵图
输出:
三角形输出"3 jiao *“ 四边形输出"4 bian *”
..........
..........
..........
....#.....
...#.#....
..#...#...
.#.....#..
#########.
..........
..........
3 jiao *
题目描述:
JiangYu很无聊,所以他拿钉子在板子上戳出了一个由.#组成的10*10八联通点阵图。 请机智的你判断图中的#组成的是三角形还是四边形?
其中一种3 jiao *为
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . # . . . . .
. . . # . # . . . .
. . # . . . # . . .
. # . . . . . # . .
######### .
. . . . . . . . . .
. . . . . . . . . .
其中一种4 bian *为
. . . . . . . . . .
. . . . . . . . . .
. ########.
. # . . . . . . #.
. # . . . . . . #.
. # . . . . . . #.
. ########.
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
输入:
一个10*10点阵图
输出:
三角形输出"3 jiao *“ 四边形输出"4 bian *”
【分析】:
斜四边形:行2尖以及列2尖、 平四边形:0尖、 梯形:1个行尖,0个列尖
正放三角形:1个行尖、倒放三角形:1个列尖 (但是另一个都不为0)
【BFS】:
【代码】:
#include<iostream>
#include<algorithm>
#include<string.h>
#include<cstring>
#include<cstdio>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define N 15
using namespace std;
char s[N][N]; const int dx[]={-,,,,,,-,-};
const int dy[]={-,-,-,,,,,}; bool ok(int x, int y) //未越界+遇到#
{
return x>= && y>= && x< && y< && s[x][y]=='#';
} int dfs(int x, int y, int d)
{
int res = ;
s[x][y]='.';
int nx = x + dx[d],ny = y + dy[d];
if(!ok(nx,ny)) res++;
else return res+=dfs(nx,ny,d);
for(int i=;i<;i++)
{
int nx=x+dx[i],ny=y+dy[i];
if(ok(nx,ny)) return res+=dfs(nx,ny,i);
}
return res;
} int main()
{
for(int i=;i<;i++)
scanf("%s",s+i);
int cnt=;
for(int i=;i<;i++){
for(int j=;j<;j++){
if(s[i][j]=='#')
cnt = dfs(i,j,);
}
}
if(cnt>) puts("4 bian *");
else puts("3 jiao *");
} /*
保证每条边长度>2,保证所有的#之间是联通的。 ..#.......
.#.#......
#####.....
..........
..........
..........
..........
..........
..........
.......... ....#.....
...##.....
..#.#.....
...##.....
....#.....
..........
..........
..........
..........
.......... ...#......
..#.#.....
.#...#....
..#.#.....
...#......
..........
..........
..........
..........
.......... ..........
..........
..........
..........
..........
..........
..........
.....###..
.....#.#..
.....###.. ....#.....
...##.....
..#.#.....
.#..#.....
.####.....
..........
..........
..........
..........
.......... ....#.....
...##.....
..#.#.....
.#..#.....
#####.....
..........
..........
..........
..........
..........
*/
DFS
#include<iostream>
#include<algorithm>
#include<string.h>
#include<cstring>
#include<cstdio>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define N 15
using namespace std;
char s[N][N]; int main()
{ int f=,f1=,cnt,cnt1;
for(int i=;i<;i++)
gets(s[i]);
for(int i=;i<;i++)
{
cnt=cnt1=;
for(int j=;j<;j++)
{
if(s[i][j]=='#')
cnt++;
if(s[j][i]=='#')
cnt1++;
}
if(cnt == ) {
f++ ;
}
if(cnt1 == ){
f1++;
}
} if(f==&&f1!= || f1==) puts("3 jiao *");
else puts("4 bian *"); return ;
} /*
保证每条边长度>2,保证所有的#之间是联通的。 ..#.......
.#.#......
#####.....
..........
..........
..........
..........
..........
..........
.......... ....#.....
...##.....
..#.#.....
...##.....
....#.....
..........
..........
..........
..........
.......... ...#......
..#.#.....
.#...#....
..#.#.....
...#......
..........
..........
..........
..........
.......... ..........
..........
..........
..........
..........
..........
..........
.....###..
.....#.#..
.....###.. ....#.....
...##.....
..#.#.....
.#..#.....
.####.....
..........
..........
..........
..........
.......... ....#.....
...##.....
..#.#.....
.#..#.....
.####.....
..........
..........
..........
..........
..........
*/
模拟
NEUQOJ 1999: 三角形or四边形?【搜索联通块/模拟】的更多相关文章
- POJ 2386 Lake Counting(搜索联通块)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 48370 Accepted: 23775 Descr ...
- Codeforces 731C. Socks 联通块
C. Socks time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input o ...
- 分别利用并查集,DFS和BFS方法求联通块的数量
联通块是指给定n个点,输入a,b(1<=a,b<=n),然后将a,b连接,凡是连接在一起的所有数就是一个联通块: 题意:第一行输入n,m,分别表示有n个数,有输入m对连接点,以下将要输入m ...
- Codeforces Round #369 (Div. 2) D. Directed Roads dfs求某个联通块的在环上的点的数量
D. Directed Roads ZS the Coder and Chris the Baboon has explored Udayland for quite some time. The ...
- Educational Codeforces Round 5 - C. The Labyrinth (dfs联通块操作)
题目链接:http://codeforces.com/contest/616/problem/C 题意就是 给你一个n行m列的图,让你求’*‘这个元素上下左右相连的连续的’.‘有多少(本身也算一个), ...
- 【UVA10765】Doves and bombs (BCC求割点后联通块数量)
题目: 题意: 给了一个联通无向图,现在问去掉某个点,会让图变成几个联通块? 输出的按分出的从多到小,若相等,输出标号从小到大.输出M个. 分析: BCC求割点后联通块数量,Tarjan算法. 联通块 ...
- POJ 1523 SPF (去掉割点能形成联通块的个数)
思路:使用tarjan算法求出割点,在枚举去掉每一个割点所能形成的联通块的个数. 注意:后来我看了下别的代码,发现我的枚举割点的方式是比较蠢的方式,我们完全可以在tarjan过程中把答案求出来,引入一 ...
- HDU - 1213 dfs求联通块or并查集
思路:给定一个无向图,判断有几个联通块. AC代码 #include <cstdio> #include <cmath> #include <algorithm> ...
- [洛谷P1197/BZOJ1015][JSOI2008]星球大战Starwar - 并查集,离线,联通块
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...
随机推荐
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
- Android学习记录(8)—Activity的四种加载模式及有关Activity横竖屏切换的问题
Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...
- python学习笔记十三:Flask demo
一.Flask简介 Flask 是一个 Python 实现的 Web 开发微框架.官网:http://flask.pocoo.org/ 二.Demo 1.代码结构 . ├── blog.py ├── ...
- 了解JavaScript核心精髓(四)
ES6 1.import与require区别 import 是同步导入js模块. require 是异步导入js模块. 2.使用let与const let con1 = 3 //与var作用相似,le ...
- csdn回到顶端
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Bit与Byte的区别
在工作中遇到一些概念模糊的地方, 需要记住了bit意为“位”或“比特”,是计算机运算的基础: byte意为“字节”,是计算机文件大小的基本计算单位: 说到usb2.0标准接口传输速率.许多人都将“48 ...
- Vue_自定义指令
关于Vue的自定义指令: - 在Vue中除了核心功能默认内置的指令(v-model & v-show) - Vue也允许注册自定义指令. 注意,在 Vue2.0 中,代码复用和抽象的主要形式是 ...
- 孤荷凌寒自学python第四天 安装python的其它IDE环境
孤荷凌寒自学python第四天 安装python的其它IDE环境 (完整学习过程屏幕记录视频地址在文末) 因为是完全的新手,对python环境搭建完全一无所知,因此,可真是大费周章才配置了其它多个Id ...
- 大图轮播js
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- HTML5应用:setCustomValidity(message)接口
本文转自http://tid.tenpay.com/?p=3592 HTML5表单验证给前端人员带来了便利,但是在用户体验上存在一些缺陷,默认的提示对用户很不友好,无法准确的获取想要的信息.好在大牛们 ...