zoukankan      html  css  js  c++  java
  • POJ 1979 Red and Black(水题,递归)

    一开始理解错题意了,以为是走过的砖不能再重复走,最多能走多少个黑砖,结果写的递归陷入死循环。。。
    后来才明白原来可以重复走,问可以到达的磁砖数。

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <math.h>
    #include <algorithm>
    
    using namespace std;
    int w,h,num,ans;
    int f[22][22];//存储地图的信息,为0代表是黑砖,为1代表红砖,2代表已走过该砖
    
    void search(int row,int col){
        if(row<1||row>h||col<1||col>w){
            return;
        }
        if(f[row][col]==1||f[row][col]==2)
            return;
            num++;
            f[row][col]=2;
    
            search(row,col-1);
            search(row,col+1);
            search(row-1,col);
            search(row+1,col);
    
    }
    int main()
    {
        int px,py;
        char str[22];
        while(scanf("%d%d",&w,&h)!=EOF){
            if(w==0 && h==0)
                break;
            memset(f,0,sizeof(f));
            num=0;
            ans=0;
            for(int i=1;i<=h;i++){
                scanf("%s",str);
                //一开始j从1开始了,囧。。。
                for(int j=0;j<w;j++){
                    if(str[j]=='#')
                        f[i][j+1]=1;
                    else if(str[j]=='@'){
                        //f[i][j]=2;
                        px=i;
                        py=j+1;
                    }
                }
            }
            search(px,py);
            printf("%d
    ",num);
        }
        return 0;
    }
  • 相关阅读:
    Linux文本处理命令
    管道和重定向
    Linux网络基本配置
    网络基础
    普通权限和特殊权限
    Linux权限
    Linux用户
    Linux帮助文档
    创建新表,自动授权trigger
    禁用约束语法测试
  • 原文地址:https://www.cnblogs.com/chenxiwenruo/p/3321782.html
Copyright © 2011-2022 走看看