zoukankan      html  css  js  c++  java
  • q1096

    一,看题

    1,大概是每个点都来一次BFS标记下应该就可以。

    2,你可以想想队列为啥pop()是l++;

    3,还是字符你得注意下。

    4,x,y,m,n,行列你得搞清楚。

    5,这棋盘的破东西。。

    6,额,字符的比较不该用strcmp么

    7,我都觉得不需要bfs那样,都行。

    但是可以的话练一下bfs的模板。

    8,bfs也可以有两种情况,

    有返回值的和没有返回值的。

    9,注意字符数组,你往进存的话要注意。

    10,样例都能过,这个运行错误我也是。。

    11,昨天是一个return 。。写错了改写成continue的。

    (这代码折叠啥的我还真玩不了)

    12,至少从我测试来看,

    memset在<cstring>中。

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 int n,m;
     5 int cnt;
     6 char board[100000][100000];
     7 int dx[]={1,-1,0,0,1,-1,1,-1};
     8 int dy[]={0,0,1,-1,1,1,-1,-1};
     9 void bfs(int x,int y)
    10 {
    11     cnt=0;
    12     if(board[x][y]=='*') return ;
    13     for(int i=0;i<=7;i++)
    14     {
    15         int xx=x+dx[i];
    16         int yy=y+dy[i];
    17         if(xx<1||yy<1||xx>n||yy>m) continue;
    18         if(board[xx][yy]=='*') cnt++;
    19      } 
    20     board[x][y]=cnt+'0';
    21     
    22 }
    23 int main(){
    24     int k=1;
    25     while(cin>>n>>m)    
    26     {
    27         for(int i=1;i<=n;i++)
    28             for(int j=1;j<=m;j++)
    29                 cin>>board[i][j];
    30         for(int i=1;i<=n;i++)
    31             for(int j=1;j<=m;j++)
    32                 bfs(i,j);
    33         cout<<"Field #"<<k<<":"<<endl;
    34         for(int i=1;i<=n;i++)
    35             for(int j=1;j<=m;j++)
    36                 {
    37                     cout<<board[i][j];
    38                     if(j==m)
    39                         cout<<"
    ";
    40                  } 
    41         cout<<"
    ";
    42         k++;    
    43     }
    44     memset(board,0,sizeof(board));
    45     
    46 } 
  • 相关阅读:
    jqmodal遮罩层的实现
    让Editplus和SVN集成
    asp.net很有用的字符串操作类
    TCP socket编程
    Adroid: ProgressBar 的使用
    在想的事情......
    I'm new to CNBlogs!
    压力
    开心工作
    feature
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12077690.html
Copyright © 2011-2022 走看看