zoukankan      html  css  js  c++  java
  • 图形点扫描

    有一条“封闭”曲线划定的地图,界定曲线上的点有“1“表示,曲线内外的点用“0”表示(具体数据由另文件提供)。

       试实施图形点扫描,统计地图的面积即“封闭”曲线内“0”点数。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int n,m;
    int ans[15][15];
    void in_put()
    {
        //memset(ans,-1,sizeof(ans));
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;++i)
            for(int j=1;j<=m;++j)
                scanf("%d",&ans[i][j]);
    }
    void out_put()
    {
        int cnt=0;
        for(int i=1;i<=n;++i)
            for(int j=1;j<=m;++j)
            if(!ans[i][j]) cnt++;
            printf("%d
    ",cnt);
    }
    void dfs(int c,int v)
    {
        if((c<=n&&c>=1)&&(v>=1&&v<=n)&&!ans[c][v]) {
            ans[c][v]=-1;
            dfs(c-1,v);dfs(c+1,v);
            dfs(c,v+1);dfs(c,v-1);
        }
    }
    void solve()
    {
        in_put();
        for(int i=1;i<=n;++i)
                for(int j=1;j<=m;j++){
                    if(i==1||j==m||j==1||i==n){
                        if(!ans[i][j]) {ans[i][j]=-1;
                        dfs(i-1,j);
                        dfs(i+1,j);
                        dfs(i,j+1);
                        dfs(i,j-1);}
                }
        }
    }
    int main()
    {
        //freopen("case.txt","r",stdin);
        int t=2;
        while(t--){
        solve();
        out_put();
        for(int i=1;i<=n;++i){
            for(int j=1;j<=m;++j)
            printf("%d ",ans[i][j]);
            printf("
    ");}
        }
        return 0;
    }
    
  • 相关阅读:
    Promise前期准备---区别实例对象与函数对象
    es6之函数参数默认值、字符串方法、for of
    es6之剩余和扩展参数
    es6之解构赋值
    es6之set和map
    前端知识点总结
    jQuery的12种选择器
    前端面试总结
    Closure
    PHP 中 16 个魔术方法详解
  • 原文地址:https://www.cnblogs.com/orchidzjl/p/4360892.html
Copyright © 2011-2022 走看看