zoukankan      html  css  js  c++  java
  • ACM_新七步诗(深搜)

    新七步诗

    Time Limit: 2000/1000ms (Java/Others)

    Problem Description:

    突然的一天,小锴做了一个梦,梦见自己来到了三国,而自己也成了梦寐以求的帅哥——曹植。不幸的是,小锴得罪了曹丕,而这个曹丕竟然长得跟小光会长一模一样,这......。这剧情有点狗血。于是,小光会长把小锴关进了一个矩形房间,这个房间被分成一个个边长为1的方块。这个房间除了小锴,还有凶猛的士兵,小锴只能在士兵把守的范围内活动。

    Input:

    多组测试数据。对于每组测试数据,首行是W和H(0<=W,H<=20),分别代表方块的列数和行数。接下来是房间的布局:
    “.”:空的方块,即小锴可行走;
    “X”:有士兵的方块,即小锴不能行走,也不能越过士兵;
    “I”:小锴的初始位置。
    当输入为两个0时,不做处理,结束测试。

    Output:

    对于每组测试数据,输出小锴可以行走的房间的面积。

    Sample Input:

    6 9
    ....X.
    .....X
    ......
    ......
    ......
    ......
    ......
    XI...X
    .X..X.
    7 7
    ..X.X..
    ..X.X..
    XXX.XXX
    ...I...
    XXX.XXX
    ..X.X..
    ..X.X..
    0 0

    Sample Output:

    45
    13
    解题思路:暴力深搜,题意跟这题一样的,链接:ACM_魔仙岛探险(深搜)
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int col,row,si,sj,dot,dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};char msp[25][25];
     4 void dfs(int x,int y){
     5     if(x<0||y<0||x>=row||y>=col||msp[x][y]=='X')return;
     6     msp[x][y]='X';dot++;
     7     for(int i=0;i<4;++i)
     8         dfs(x+dir[i][0],y+dir[i][1]);
     9 }
    10 int main(){
    11     while(~scanf("%d %d",&col,&row)&&(row+col)){
    12         for(int i=0;i<row;++i){
    13             getchar();//吃掉回车符对字符读取的影响
    14             for(int j=0;j<col;++j){
    15                 scanf("%c",&msp[i][j]);
    16                 if(msp[i][j]=='I'){si=i;sj=j;}//记录深搜的起点
    17             }
    18         }
    19         dot=0,msp[si][sj]='.',dfs(si,sj);
    20         printf("%d
    ",dot);
    21     }
    22     return 0;
    23 }
    
    
  • 相关阅读:
    如何使用websocket实现前后端通信
    影响MySQL的性能(一)磁盘的选择
    springboot结合日志门面SLF4j和日志实现Logback的使用
    分享一个猜数字小游戏的脚本
    关于drop table *** purge (drop后不过回收站)
    关于DateBase link(dbLINK)及同义词
    关于数据更新(update)
    关于insert into(插入值)
    关于wm_concat(把一列的值,通过','进行分隔后,合并成一个值进行显示)
    关于PIVOT(用于行转列)
  • 原文地址:https://www.cnblogs.com/acgoto/p/9276515.html
Copyright © 2011-2022 走看看