zoukankan      html  css  js  c++  java
  • 杭州网赛E(枚举)&hdu4414

    方向开始都搞乱了。调半天。

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    int n,u,d,l,r,num,flag;
    char map[55][55];
    int dfsu(int x,int y){
        if(map[x][y]!='#') return num;
        if(map[x][y-1]=='#' || map[x][y+1]=='#'){
            flag=1;
            return num;
        }
        if(map[x][y]=='#'){
            num++;
            dfsu(x-1,y);
        }
    
    }
    int dfsd(int x,int y){
        if(map[x][y]!='#') return num;
        if(map[x][y-1]=='#' || map[x][y+1]=='#'){
            flag=1;
            return num;
        }
        if(map[x][y]=='#'){
            num++;
            dfsd(x+1,y);
        }
    
    }
    int dfsl(int x,int y){
        if(map[x][y]!='#') return num;
        if(map[x-1][y]=='#' || map[x+1][y]=='#'){
            flag=1;
            return num;
        }
        if(map[x][y]=='#'){
            num++;
            dfsl(x,y-1);
        }
    
    }
    int dfsr(int x,int y){
        if(map[x][y]!='#') return num;
        if(map[x-1][y]=='#' || map[x+1][y]=='#'){
            flag=1;
            return num;
        }
        if(map[x][y]=='#'){
            num++;
            dfsr(x,y+1);
        }
    
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        while(scanf("%d",&n)!=EOF){
            if(n==0) break;
            for(int i=0;i<n;i++){
                scanf("%s",map[i]);
            }
            /*for(int i=0;i<n;i++){
                printf("%s\n",map[i]);
            }*/
            int res=0;
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    flag=0;
                    if(map[i][j]=='#' && i>0 && j>0 && i<n-1 && j<n-1){
                        num=0;
                        l=dfsl(i,j-1);
                        num=0;
                        r=dfsr(i,j+1);
                        num=0;
                        u=dfsu(i-1,j);
                        num=0;
                        d=dfsd(i+1,j);
    
                        //printf("x=%d,y=%d %d %d %d %d\n",i,j,u,d,l,r);
                        if(u>0 && d>0 && l>0 && r>0 && !flag && u==d && d==l && l==r && r==u){
                            res++;
                        }
                    }
                }
            }
            printf("%d\n",res);
        }
        return 0;
    }
  • 相关阅读:
    数组字典
    字符串创建
    不可变数组
    数组
    纯净控制台
    可变字典
    数组Array
    id NSObject instanceType 区别
    可变字符串 插入,删除,替换,赋值
    查询字符串中某部分的字符串
  • 原文地址:https://www.cnblogs.com/markliu/p/2736261.html
Copyright © 2011-2022 走看看