hdu 4414 Finding crosses
来源:互联网 发布:80端口备案流程 编辑:程序博客网 时间:2024/05/22 06:59
hdu 4414 Finding crosses
数据范围这么小,随便暴搜就可以过
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int maxn=55;char mp[maxn][maxn];vector<pair<int,int> > g;bool vis[maxn][maxn];int dx[]={0,1,0,-1},n;int dy[]={1,0,-1,0};int Mx,My;void dfs(int x,int y){ if(x<Mx) Mx=x,My=y; g.push_back(make_pair(x,y)); vis[x][y]=1; for(int i=0;i<4;i++) { int nx=x+dx[i],ny=y+dy[i]; if(nx<0||nx>=n||ny<0||ny>=n||vis[nx][ny]||mp[nx][ny]!='#') continue; dfs(nx,ny); }}bool judge(int x,int y,int r){ if(!vis[x][y]) return 0; int nx,ny; for(int i=1;i<=r/2;i++) { nx=x,ny=y-i; if(nx<0||nx>=n||ny<0||ny>=n||!vis[nx][ny]) return 0; } return 1;}int main(){ while(scanf("%d",&n)==1&&n) { int ans=0; for(int i=0;i<n;i++) scanf("%s",mp[i]); memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(!vis[i][j]&&mp[i][j]=='#') { Mx=100; g.clear(); dfs(i,j); // cout<<g.size()<<endl; for(int r=3;r+r-1<=g.size();r+=2) if(r+r-1==g.size()) { int x=Mx+r/2,y=My; if(judge(x,y,r)) ans++; } } printf("%d\n",ans); } return 0;}
- hdu-4414-Finding crosses
- hdu 4414 Finding crosses
- hdu 4414 Finding crosses
- HDU 4414 Finding crosses
- HDU 4414 Finding crosses
- HDU 4414 Finding crosses
- HDU 4414: Finding crosses
- hdu 4414Finding crosses(模拟)
- Finding crosses hdu 4414 dfs
- HDU 4414 Finding crosses 暴力枚举
- hdu 4414 Finding crosses 简单搜索
- hdu 4414 Finding crosses【简单模拟】
- HDU 4414 Finding crosses (DFS + BFS)
- HDU 4414 Finding crosses(暴力判断)
- HDU 4414 Finding crosses(dfs)
- HDU ACM 4414 Finding crosses 暴力枚举
- hdu 4414 Finding crosses(搜索)
- HDU 4414 Finding crosses(搜索)
- AD9512单片机控制编程
- 数据库
- 机房收费系统之数据源配置
- (2期)查询表结构及清单信息
- Struts2 官方教程(前言)(一)
- hdu 4414 Finding crosses
- Objective-C 入门初级学习
- 【打基础】高级语言程序设计·厦大出版社 课后习题个人记录3
- 特殊数据类型数据成员的初始化注意事宜
- java版atoi
- mysqldump数据库导出,避免乱码,设置导出编码,查看数据库编码
- 学习Objective-C: 入门
- 2013华为校园招聘面经
- C#--第六周实验--任务1--返回第二个参数在第一个参数中出现次数