杭电1241(搜索) (2010-12-12 20:00)
来源:互联网 发布:java循环结构 编辑:程序博客网 时间:2024/06/05 10:47
开始题目楞是没看懂,看了10分钟什么都不知道,都想放弃了,想想在看5分钟,于是我照着Google翻译和原题目又看了一便,懂了.
接下来就是敲代码,最后复制测试数据,但是网站的数据写错了(多了个回车),将信将疑的提交,竟然一次通过
#include<stdio.h>
#define N 100
char juzhen[N+2][N+2],flag,kz[N+2][N+2];
int work[8][2]={-1,0,-1,1,0,1,1,1,1,0,1,-1,0,-1,-1,-1};
void fun(int row,int col,int n,int m){
int i,j,temp=1;
//判断什么时候加一个油库
if(juzhen[row][col]=='@'){
for(i=0;i<8;i++){
if(!kz[row+work[i][0]][col+work[i][1]] && juzhen[row+work[i][0]][col+work[i][1]]=='@' && row+work[i][0] >=0 && row + work[i][0]<n && col+work[i][1]>=0 && col+work[i][1]<m){
temp=0;
}
}
if(temp){
flag++;
}
}
//搜索相同的油库
for(i=0;i<8;i++){
if(kz[row+work[i][0]][col+work[i][1]] && juzhen[row][col]=='@' && row+work[i][0] >=0 && row + work[i][0]<n && col+work[i][1]>=0 && col+work[i][1]<m){
kz[row][col]=0;
fun(row+work[i][0],col+work[i][1],n,m);
}
}
}
int main()
{
int n,m,i,j;
while(scanf("%d%d",&n,&m)!=EOF){
getchar();
if(n==0 && m==0) return 0;
for(i=0;i<n;i++){
gets(juzhen[i]);
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
kz[i][j]=1;
flag=0;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
fun(i,j,n,m);
}
printf("%d\n",flag);
}
return 0;
}
- 杭电1241(搜索) (2010-12-12 20:00)
- 杭电1241搜索题
- 杭电1241-搜索专题&&迷宫问题
- 杭电1241Oil Deposits DFS 搜索
- 杭电1312-搜索
- 杭电1195 搜索
- 杭电1312,搜索题
- 杭电1239—搜索
- 杭电ACM_1010_搜索题
- 杭电ACM1238(搜索题)
- 杭电ACM1239(搜索题)
- 杭电ACM1010(搜索题)
- 杭电ACM1241(搜索题)
- 杭电 二叉搜索树
- 杭电5305 Friends 搜索
- 杭电1241 Oil Deposits(搜索题)
- 杭电BC12.12
- 杭电 3791 搜索二叉树
- 【转july】一、A*搜索算法
- ACM 第四题 (2010-6-7 15:43)
- MyEclipse快捷键大全
- ACM第五题
- ACM 竞赛第六题(用时4小时) (2011-3-9 10:04)
- 杭电1241(搜索) (2010-12-12 20:00)
- Linux下C语言编程--文件的操作
- Extjs 给 Grid 加上tooltip的几种实现方式
- 使用浮点数和小数中的技巧和陷阱
- DP 1024 (2011-2-27 09:16)
- DP 1881 (2011-2-28 19:40)
- n个三角形能把平面分成几个区域 2011-3-2 22:20
- Linux系统进程控制编程----wait函数使用
- CS5536中SMB寄存器的说明