hdu 4414 Finding crosses(搜索)
2015-09-04 22:02
447 查看
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4414
解题思路:
题目大意:
给你一个 n*n 的图 (3 <= n <= 50),然后让你找出有多少个十字架,输出结果,十字架结构:由 "#" 构成,十字架周围不可以有 "#" 才满足条件。
比如说这个图:有一个十字架,那么红色区域都不能够是 "#", 否则这个十字架不算数。。。
AC代码:
http://acm.hdu.edu.cn/showproblem.php?pid=4414
解题思路:
题目大意:
给你一个 n*n 的图 (3 <= n <= 50),然后让你找出有多少个十字架,输出结果,十字架结构:由 "#" 构成,十字架周围不可以有 "#" 才满足条件。
比如说这个图:有一个十字架,那么红色区域都不能够是 "#", 否则这个十字架不算数。。。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n; char maze[55][55]; bool check(int x,int y){ int up = 0,down = 0,left = 0,right = 0; //up for(int i = x-1; i >= 0; i--){ if(maze[i][y] != '#') break; else if(maze[i][y-1] == '#' || maze[i][y+1] == '#') return false; else up++; } if(up == 0) return false; //down for(int i = x+1; i < n; i++){ if(maze[i][y] != '#') break; else if(maze[i][y-1] == '#' || maze[i][y+1] == '#') return false; else down++; } if(down == 0) return false; if(up != down)//上下比较 return false; //left for(int i = y-1; i >= 0; i--){ if(maze[x][i] != '#') break; else if(maze[x-1][i] == '#' || maze[x+1][i] == '#') return false; else left++; } if(left == 0) return false; //right for(int i = y+1; i < n; i++){ if(maze[x][i] != '#') break; else if(maze[x-1][i] == '#' || maze[x+1][i] == '#') return false; else right++; } if(right == 0) return false; if(left != right)//左右比较 return false; if(up != left)//上左比较 return false; return true; } int main(){ while(scanf("%d",&n),n){ for(int i = 0; i < n; i++){ scanf("%s",maze[i]); } int ans = 0; for(int i = 1; i < n-1; i++){ for(int j = 1; j < n-1; j++){ if(maze[i][j] == '#' && check(i,j)) ans++; } } printf("%d\n",ans); } return 0; }
相关文章推荐
- 关于WebView加载URL时显示一片空白的问题
- 算法学习-----插入排序(Java)
- java 中的Unsafe
- 相关分析与回归分析(一)
- hdoj 1715 大菲波数 【大数斐波那契数列】
- 两个简单实用的js代码
- 欢迎使用CSDN-markdown编辑器
- SQL Server 2016 CTP2.3 的关键特性
- 用php写一个取数据的接口
- 两个有序数组中的第K个元素
- 线段树什么的最讨厌了
- regionprops函数用法详解
- IT薪酬
- AtomicInteger与Volatile修饰
- Oxer的dp训练
- 条款9:绝不在构造和析构过程中调用virtual函数(Never call virtual functions during construction or destruction)
- 讯飞语音语音合成辅助类
- 程序员的自我修养及进步
- atomic vs volatile
- bwlabel函数和regionprops函数用法详解