zoukankan      html  css  js  c++  java
  • POJ2386

    1,我对我这水平产生了挺大的怀疑。

    2,我真是,又没写字符数组!!!

    3,反正我觉得你这情况堪忧。

    #include<iostream>
    using namespace std;
    int n,m;
    char b[100][100];
    int dx[]={1,1,1,0,0,-1,-1,-1};//还可以用循环挺有意思的 
    int dy[]={1,0,-1,1,-1,0,1,-1};
    int cnt=0;
    int dfs(int x,int y)
    {
        b[x][y]='.';
        if(x<1||y<1||x>n||y>m) return 0;
        for(int i=0;i<=7;i++)
        {
            int xx=x+dx[i];
            int yy=y+dy[i];
            if(b[xx][yy]=='W') 
            {
                dfs(xx,yy);
             } 
         } 
        return 0;
        
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                cin>>b[i][j];
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                {
                    if(b[i][j]=='W')
                    {
                        dfs(i,j);
                        cnt++;
                    }
            }
        cout<<cnt<<endl;
        
        
    } 

    4,反正以后写dx[],dy[]倒是有个套路了.

    5,其实写之前都没想通,这个确实。然后又觉得自己先写下去会更舒服些。然后就不停bug。害。

    6,但是oj上是runtime error;我去。

    是不是体现了个时间复杂度的问题。

    7,好像就是代码上的一些细节成这些问题了

    8,

    #include<iostream>
    using namespace std;
    int n,m,cnt=0;
    char b[105][105]; 
    int dx[]={1,1,1,0,0,-1,-1,-1};
    int dy[]={1,-1,0,1,-1,1,-1,0};
    int dfs(int x,int y)
    {
        b[x][y]='.';
        for(int i=0;i<=7;i++)
        {
            int xx=x+dx[i];
            int yy=y+dy[i];
            if(xx>=1&&y>=1&&xx<=n&&yy<=m&&b[xx][yy]=='W')
                dfs(xx,yy);
        }    
        return 0;
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                cin>>b[i][j];
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                if(b[i][j]=='W')
                {
                    dfs(i,j);
                    cnt++;
                }
        cout<<cnt<<endl;
        
    }
     

    6,不过dfs的话,似乎除了边界要有return ,最后好像也要return .不管你返回值是什么的。

    7,你第二个代码把x,y的范围放到里面其实少了好多步。之前要进的更多。

    8,来下费曼吧。

    9,费曼出来就是一个满足条件然后执行的过程,

    就像你在森林冰火人里面,你一个火人按着那个按钮,门才会开。

    我得正确地使用费曼。

    10,对了复杂度也得好好分析下,

  • 相关阅读:
    ElasticSearch 常用的查询过滤语句
    ElasticSearch的 Query DSL 和 Filter DSL
    photoshop CS 调整选择区域的大小
    pthread_once重塑singleton模式
    SGU536 Berland Chess
    怎样实现多线程
    [置顶] Linux下将Nutch1.3导入eclipse
    ENC28J60学习笔记——第1部分
    再看copy_on_write缩小临界区的例子
    leetcode Roman Integer
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12122823.html
Copyright © 2011-2022 走看看