【p1605-迷宫】解题记录

题目链接

一道简单的 dfs 题。

#include <cstdio>
using namespace std;

const int maxn=12;
int map[maxn][maxn], 
    line_size, col_size, stone_size,
    beg_line, beg_col, end_line, end_col,
    cnt_ans=0;

void dfs(int line, int col){
    if(line<1 || line>line_size 
       || col<1 || col>col_size
       || map[line][col]){ return; }
    if(line==end_line && col==end_col){
        ++cnt_ans;
    }
    map[line][col]= true;
    dfs(line+1, col);
    dfs(line-1, col);
    dfs(line, col+1);
    dfs(line, col-1);
    map[line][col]= false;
}

void print(){
    for(int line=1; line<=line_size; ++line){
        for(int col=1; col<=col_size; ++col){
            int ch= map[line][col];
            if(ch) putchar('#');
            else putchar('@');
        }
        putchar('\n');
    }
}

int main(){

    scanf("%d%d%d", &line_size, &col_size, &stone_size);
    scanf("%d%d%d%d", &beg_col, &beg_line, &end_col, &end_line);

    for(int i=1; i<=stone_size; ++i){
        int line, col;
        scanf("%d%d", &col, &line);
        map[line][col]= true;
    }

    //printf("%d %d %d %d\n", beg_line, beg_col, end_line, end_col);
    //print();


    dfs(beg_line, beg_col);

    printf("%d\n", cnt_ans);

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值