1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<iostream> 5  6 using namespace std; 7  8 char map[30][30]; 9 int vis[30];  10 int dir[4][2] = {1,0,-1,0,0,-1,0,1}; //搜索的四个方向,这里用数组表示,为了下面表示方便11 int ans, row, col, loc; //loc表示搜索的深度。12 13 int Inmap(int nr,int nc)  //判断搜索的条件,也可直接写在DFS内,这里为了避免一行的代码过于冗长。14 {15    if (nr >= 0 && nr < row && nc >= 0 && nc < col)16    {17      return 1;18    }19    return 0;20 }21 void DFS(int r,int c) //无返回值就用void.22 {23      int i,nr,nc;24    if (loc > ans)25    {26       ans=loc;//对ans的值进行更新,它的值就是搜索的深度。27    }28  29    for ( i=0;i<4;i++)30    {31       nr=r+dir[i][0];32       nc=c+dir[i][1];33      if (Inmap(nr,nc) && !vis[map[nr][nc]-'A'])34      {35         vis[map[nr][nc]-'A']=1;//将访问过的字符标记为1,相同的字符就不会再被标记。36         loc++;//深度加137         DFS(nr,nc);38         vis[map[nr][nc]-'A']=0;回溯反标记39         loc--; //回溯后深度会减小1这里要减掉1.40      }41    }42 }43 int main(void)44 { 45    int i, j;46       47    while( cin >> row >> col ) 48    {49       getchar();//处理换行字符不能省略,否则会WA。50       ans = 1;51       loc = 1; //将两个变量赋值为1,因为搜索深度至少为1.52       memset(vis,0,sizeof(vis));53       for ( i=0;i<row;i++)54       {55         for(j=0; j<col; j++)56         {57           cin>>map[i][j];58         }59         getchar();60       }61       vis[map[0][0]-'A']=1;62       DFS(0,0);63       cout<< ans <<endl;64   }65    return 0;66 }

  

转载于:https://www.cnblogs.com/cn19901203/archive/2011/08/26/2154930.html

POJ 1154题解,此题不难理解方法就是DFS,属于水题。不过有一些细节要注意。...相关推荐

  1. PAT甲题题解-1011. World Cup Betting (20)-误导人的水题。。。

    题目不严谨啊啊啊啊 式子算出来结果是37.975 样例输出的是37.98 我以为是四舍五入的啊啊啊,所以最后输出的是sum+0.005 结果告诉我全部错误啊 结果直接保留两位小数就可以了啊啊啊啊 水题 ...

  2. 【POJ - 3048】Max Factor (数论,打表,水题)

    题干: To improve the organization of his farm, Farmer John labels each of his N (1 <= N <= 5,000 ...

  3. 超级大水题(还是自己过不了的水题)

    题目链接:https://vjudge.net/contest/231314#problem/D Peter Parker wants to play a game with Dr. Octopus. ...

  4. 【Leetcode每日一题】118. 杨辉三角(水题)

    Leetcode每日一题 题目链接: 118. 杨辉三角 难度: 简单 解题思路: 无.见代码. 题解: class Solution:def generate(self, numRows: int) ...

  5. 蓝桥杯 第三届C/C++预赛真题(7) 放棋子(水题)

    今有 6 x 6 的棋盘格.其中某些格子已经预先放好了棋子.现在要再放上去一些,使得:每行每列都正好有3颗棋子.我们希望推算出所有可能的放法.下面的代码就实现了这个功能. 初始数组中,"1& ...

  6. 【qduoj - 夏季学期创新题】最长公共子串(水题暴力枚举,不是LCS啊)

    题干: 描述 编写一个程序,求两个字符串的最长公共子串.输出两个字符串的长度,输出他们的最长公共子串及子串长度.如果有多个最长公共子串请输出在第一个字符串中先出现的那一个. 特别注意公共子串中可能包含 ...

  7. POJ 1003 Hangover 水题

    题目看着挺复杂,还配了个看上去就很高大上的图,但是看完题就发现,完完全全是一道水题= =好吧,题意简单说就是有一排数,是1/2,1/2+1/3,1/2+1/3+1/4.......然后给出一个数,问这 ...

  8. 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂

    文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...

  9. 【UR #7】水题走四方

    题目描述 今天是世界水日,著名的水题资源专家蝈蝈大臣发起了水题走四方活动,向全世界发放成千上万的水题. 蝈蝈大臣是家里蹲大学的教授,当然不愿意出门发水题啦!所以他委托他的助手欧姆来发. 助手欧姆最近做 ...

最新文章

  1. vc mysql控件_VC++使用ActiveX控件连接和操作数据库
  2. Ajax基础知识梳理
  3. D2 AJAX 封装策略
  4. 好的Java编程习惯
  5. 2021-4-4 省选模拟赛(灯,十字路口,密室逃脱)
  6. SEO 搜索引擎优化技巧
  7. Struts框架详解
  8. 10款硬盘数据恢复软件推荐
  9. burpsuite工具抓取Https数据包
  10. Android签名方式
  11. 文本特征提取和向量化
  12. python数据分析实例-python数据分析-11数据分析实战案例
  13. Java代码审计——SSH 框架审计技巧
  14. 16岁黑客发现Steam Store审核机制漏洞,可直接发布应用或游戏
  15. JS逆向入门学习之回收商网,手机号码简易加密解析
  16. 用LINUX架设FTP服务器
  17. Unity学习资源指南[精心整理]
  18. git 提交部分修改代码(非全部代码)
  19. 开源办公OA平台教程:如何修改O2OA配置连接本地部署的OnlyOffice Docs Server服务器?
  20. Python 第四章 常用内置数据类型

热门文章

  1. php如何在微信跳转支付宝支付,微信支付成功了怎么跳转到我指定的信息提示页? - 码支付...
  2. Ubuntu16.04下在Anaconda里面安装opencv
  3. Pytorch:函数的手动梯度计算方法
  4. visio交叉线去掉交叉点弯曲方法
  5. pyqt,Qt Designer 界面布局子窗口可移动
  6. BMC之ipmitool 命令收集
  7. nginx php-cgi php
  8. Linux内核第六节 20135332武西垚
  9. 项目管理中工时计算的问题
  10. 如何正确使用 FLEX-BOX