xtu_2008 搜索
来源:互联网 发布:淘宝未收到货显示签收 编辑:程序博客网 时间:2024/05/18 01:10
写代码时要尽可能地精简,否则就可能各种错误;不熟悉的东西尽量避免使用,否则就可能各种错误……比如下面的两个,第一个AC,第二个就RE了:
(差点误人误己)原来第一种写法是水过去的,因为其搜索顺序和第二个不一样,,,,,
#include<cstdio>//当用暴力代替dfs中的for循环时为什么会爆掉?#include<cstring>#include<cstdlib>#define M 751using namespace std;int T;char G[M][M];int W, H, dx[8]={1,-1,0,0,1,-1,1,-1}, dy[8]={0,0,1,-1,1,1,-1,-1};void dfs(int x,int y){ if(x<0||x>=H||y<0||y>=W||G[x][y]=='*')return ; G[x][y]='*'; T++; for(int i=0;i<8;i++) dfs(x+dx[i],y+dy[i]);}int main(){ int i,j,max; while(scanf("%d %d",&W,&H)==2){ //fflush(stdin); getchar(); for(i=0;i<H;i++)gets(G[i]); for(T=max=i=0;i<H;i++){ for(j=0;j<W;j++){ dfs(i,j); if(T>max)max=T; T=0; } } printf("%d\n",max); } return 0;}
#include<cstdio>#include<cstring>#include<cstdlib>#define M 751using namespace std;int T,W,H;char G[M][M];const int NEG=-1,POS=1;void dfs(int x,int y){ if(x<0||x>=H||y<0||y>=W||G[x][y]=='*')return; T++; G[x][y]='*'; dfs(x,POS+y);//right dfs(x,NEG+y);//left //upward dfs(NEG+x,y); dfs(NEG+x,NEG+y); dfs(NEG+x,POS+y); //downward dfs(POS+x,y); dfs(POS+x,NEG+y); dfs(POS+x,POS+y);}int main(){ int i,j,max; while(scanf("%d %d",&W,&H)==2){ //fflush(stdin); getchar(); for(i=0;i<H;i++)gets(G[i]); for(T=max=i=0;i<H;i++){ for(j=0;j<W;j++){ dfs(i,j); if(T>max)max=T; T=0; } } printf("%d\n",max); } return 0;}
- xtu_2008 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 一个典型kernel bug的追踪之(一):出错现场分析
- Android IPC 通讯机制源码分析
- java调用SAP RFC函数
- [转]文字垂直居中
- CSS Overflow属性详解
- xtu_2008 搜索
- Winform开发框架之系统重新登录、自动登录实现
- 多线程示例代码
- Win32 API编程笔记(转)
- java调用SAP RFC函数 2
- POJ 3608 Bridge Across Islands(两个凸包最近距离,旋转卡壳)
- IOS 自定义 UIDatePicker 背景图片
- 关于xml解析错误的杂记
- linux下设置Tomcat自启动