zoukankan      html  css  js  c++  java
  • HDU-1241 Oil Deposits

    题目:https://vjudge.net/problem/HDU-1241#author=AlwaysInsistOn

    分析:简单bfs,输入后对每一个找到的'@’进行广搜并计数,将广搜找到的'@'改为'*',最后输出即可。

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 int m,n;
     4 char c[110][110];
     5 int ans;
     6 int l[10100][2];
     7 int q[9]={0,-1,-1,0,1,1,1,0,-1};
     8 int p[9]={0,0,1,1,1,0,-1,-1,-1};
     9 int check(int x,int y){
    10     if(x>=0&&x<m&&y>=0&&y<n&&c[x][y]=='@')return 1;
    11     else return 0;
    12 }
    13 void bfs(int x,int y){
    14     memset(l,0,sizeof(l));
    15     c[x][y]='*';
    16     int h=0,r=1;
    17     l[h][0]=x;
    18     l[h][1]=y;
    19     while(h<r){
    20         int x1,y1;
    21         for(int i=1;i<=8;i++){
    22             x1=l[h][0]+q[i];
    23             y1=l[h][1]+p[i];
    24             if(check(x1,y1)){
    25                 l[r][0]=x1;
    26                 l[r][1]=y1;
    27                 r++;
    28                 c[x1][y1]='*';
    29             }
    30         }
    31         h++;
    32     }
    33 }
    34 int main(void){
    35     while(scanf("%d",&m)==1&&m){
    36         scanf("%d",&n);
    37         ans=0;
    38         memset(c,'',sizeof(c));
    39         for(int i=0;i<m;i++)scanf("%s",c[i]);
    40         for(int i=0;i<m;i++){
    41             for(int j=0;j<n;j++){
    42                 if(c[i][j]=='@'){
    43                     ans++;
    44                     bfs(i,j);
    45                 }
    46             }
    47         }
    48         printf("%d
    ",ans);
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    echarts使用
    Nutch插件系统
    linux命令总结
    linux命令行快捷键
    每日一笔
    Hadoop参数调优
    rsync用于同步目录
    hadoop遇到的问题(汇总)
    linux历史命令
    hadoop 编译代码及运行
  • 原文地址:https://www.cnblogs.com/yanying7/p/12304154.html
Copyright © 2011-2022 走看看