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】:

随便从一个点dfs,有8个方向。只要改变一次方向就有一个角,记录他有几个角,

注意遍历方向的顺序 

【代码】:

#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[]={-1,0,1,1,1,0,-1,-1};
const int dy[]={-1,-1,-1,0,1,1,1,0};bool ok(int x, int y) //未越界+遇到#
{return x>=0 && y>=0 && x<10 && y<10 && s[x][y]=='#';
}int dfs(int x, int y, int d)
{int res = 0;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=0;i<8;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=0;i<10;i++)scanf("%s",s+i);int cnt=0;for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(s[i][j]=='#')cnt = dfs(i,j,0);}}if(cnt>4) 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=0,f1=0,cnt,cnt1;for(int i=0;i<10;i++)gets(s[i]);for(int i=0;i<10;i++){cnt=cnt1=0;for(int j=0;j<10;j++){if(s[i][j]=='#')cnt++;if(s[j][i]=='#')cnt1++;}if(cnt == 1) {f++ ;}if(cnt1 == 1){f1++;}}if(f==1&&f1!=0 || f1==1) puts("3 jiao *");else puts("4 bian *");return 0;
}/*
保证每条边长度>2,保证所有的#之间是联通的。..#.......
.#.#......
#####.....
..........
..........
..........
..........
..........
..........
..............#.....
...##.....
..#.#.....
...##.....
....#.....
..........
..........
..........
..........
.............#......
..#.#.....
.#...#....
..#.#.....
...#......
..........
..........
..........
..........
....................
..........
..........
..........
..........
..........
..........
.....###..
.....#.#..
.....###......#.....
...##.....
..#.#.....
.#..#.....
.####.....
..........
..........
..........
..........
..............#.....
...##.....
..#.#.....
.#..#.....
.####.....
..........
..........
..........
..........
..........
*/

模拟

转载于:https://www.cnblogs.com/Roni-i/p/9029381.html

NEUQOJ 1999: 三角形or四边形?【搜索联通块/模拟】相关推荐

  1. 区间动态规划考试反思总结——颜色联通块 分离与合体 括号涂色

    引子: 额~今天我们昨天才学了区间DP, 还没来得及复习就迎来了老师最喜欢的--我们最喜欢的模拟考试.但是,好像题已经超乎了我的想象. 啊啊啊啊啊啊啊啊啊!!! 后面两道没怎么读懂题啊! First ...

  2. 直线和圆交点 halcon_初中数学三角形、四边形、圆辅助线的添加方法

    今天,小编为大家整理了初中数学三角形.四边形.圆的辅助线添加方法,速来看!! 1三角形中常见辅助线的添加 与角平分线有关的 (1)可向两边作垂线: (2)可作平行线,构造等腰三角形: (3)在角的两边 ...

  3. P1236-Network of Schools(学校网络)【最强联通块,Kosaraju】

    正题 POJ题目链接 给出一个图,求联通块数量和加入多少条边后会将全图变为一个最强联通块. 机翻输入输出(需要自取) 输入 第一行包含整数N:网络中的学校数量(2 <= N <= 100) ...

  4. R6饮料AK赛(NOIP模拟赛)/省选专练HDU 5713 K个联通块

    我好菜啊100+60+30 滚犊子吧,两天加起来才410搞个屁我一年前都可以考400 不说了,题毕竟比较难 T1还是水题但是比昨天难 这是一个开绝对值不等式的题. 根据对奇数和偶数的最优根的归纳一定有 ...

  5. F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)

    https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...

  6. HDU 2952 Counting Sheep (DFS找联通块)

    题目链接:请戳这里.   题目大意及思路:读懂题意就好了,就是DFS找联通块. 没什么好说的,见代码吧. #include<cstdio> #include<cstring> ...

  7. matlab有限元三角,FEM-MATLAB(75) 有限元编程75个案例,梁、板等结构,三角形,四边形等单元 Algorithm 数学计算 272万源代码下载- www.pudn.com...

    文件名称: FEM-MATLAB(75)下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 40 KB 上传时间: 2017-03-08 下载次数: 0 提 供 ...

  8. 联通块 【题目描述】 一个n * m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0。问有多少个四连通的黑色格子连通块。四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每

    联通块 [题目描述] 一个n * m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0.问有多少个四连通的黑色格子连通块.四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每 ...

  9. HDU - 5925 Coconuts (二维离散化+求联通块)

    原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5925 题意:求连通块的个数,以及每个联通块中点的个数. 数据范围:1e9 思路:离散化之后,dfs求联 ...

  10. 模拟战役题解(dfs,联通块,贪心)

    目录 题目描述 输入描述: 输出描述: 输入 输出 输入 输出 思路: 代码: 题目描述 齐齐和司机在玩单机游戏<红色警戒IV>,现在他们的游戏地图被划分成一个n*m的方格地图.齐齐的基地 ...

最新文章

  1. 我都陪你坐了一天了,你好歹说句话啊!吖的,谱也忒大了。。。
  2. c# dbgrid数据导出到xlsx和ini中实例
  3. Button的使用(三):处理点击事件
  4. jdom 插入 修改 删除
  5. 全局稳定性收敛平衡点为0吗_该平衡点处的小扰动稳定性判据是什?
  6. 最全编程语言在线 API 文档
  7. TypeScript入门教程 之 箭头函数
  8. 基于DPDK+VPP实现高性能防火墙
  9. delphi services允许跨域访问
  10. 友图自动排料引擎 V1.0 开发指南
  11. NoSQL数据库的五种分类
  12. HiveQL(三):修改表ALTER TABLE
  13. 计算机文化书签,《计算机文化基础》EXCEL-机试[1]
  14. 数值分析思考题(钟尔杰版)参考解答——第六章
  15. C++学习(四九二)cmake file的GLOB和GLOB_RECURSE
  16. 沟通在日常管理工作中的重要性
  17. 统计检验 单尾还是双尾
  18. win10系统 插耳机或音箱在前置没有声音的解决方案
  19. SMB CIFS DOMIAN
  20. C语言:ASCII字符文件与二进制字符文件的相互转换

热门文章

  1. AI资源对接需求汇总:第2期
  2. 影视搜索播放PHP源码_可对接资源网
  3. 企业为什么会遭到DDoS攻击?被DDoS攻击该怎么办?
  4. 电脑很大,电脑内存很大为什么还是很卡
  5. 如何将硬盘数据迁移包括系统一起迁移到另一个硬盘?
  6. 广科计算机专业学费,电子科技大学各专业收费明细表
  7. 「玩转Python」突破封锁继续爬取百万妹子图
  8. 4D-Net for Learned Multi-Modal Alignment 论文笔记
  9. 壳聚糖/葡聚糖/纳米羟基磷灰石复合水凝胶/鱼明胶-半乳糖壳聚糖水凝胶肝支架的制备
  10. 给定平面上任意三个点的坐标,检验它们能否构成三角形。