1. package corejava;
  2.  
  3. public class FourTwo {
  4. static int m;//(m,n)为几行几列
  5. static int n;
  6. static int p;//(p,q)为终点
  7. static int q;
  8. static int min=9999;
  9. static int [][]a=new int [51][51];//存放地图
  10. static int [][]b=new int [51][51];//存放路径
  11. static String []record=new String[9999];
  12.  
  13. public static void dfs(int x,int y,int step)
  14. {
  15. int [][]next={{0,1},{1,0},{0,-1},{-1,0}};
  16. if(x==p&y==q)
  17. {
  18. System.out.println("step"+step);
  19. for(int i=0;i<step;i++)
  20. {
  21. System.out.print(record[i]);
  22. }
  23. System.out.println(" ");
  24.  
  25. if(step<min)
  26. {
  27. min=step;
  28.  
  29. }
  30. return;
  31.  
  32. }
  33. for(int k=0;k<4;k++)
  34. {
  35. int tx=x+next[k][0];
  36. int ty=y+next[k][1];
  37. if(tx<0||tx>=m||ty<0||ty>=n)
  38. {
  39. continue;
  40.  
  41. }
  42. if(a[tx][ty]==0&b[tx][ty]==0)
  43. {
  44.  
  45. record[step]="("+tx+","+ty+")";
  46.  
  47. b[tx][ty]=1;
  48. dfs(tx,ty,step+1);//若这行代码变为step++;dfs(tx,ty,step);则改变了for循环里step的值,就会出问题
  49. b[tx][ty]=0;
  50. }
  51.  
  52. }
  53. return;
  54. }
  55. public static void main(String []args)
  56. {
  57.  
  58. m = 5;
  59. n = 4;
  60. int startx=0;
  61. int starty=0;
  62. p=3;
  63. q=2;
  64. b[startx][starty]=1;
  65. record[0]="("+0+","+0+")";
  66. a[0][2]=1;
  67. a[2][2]=1;
  68. a[3][1]=1;
  69. a[4][3]=1;
  70.  
  71. dfs(startx,starty,0);
  72. System.out.println("min"+min);
  73.  
  74. }
  75.  
  76. }

这里感觉获取输入太麻烦,直接设置了固定值。同时dfs(tx,ty,step+1);这里很困扰我,开始没有考虑step在循环中用到,step=step+1后改变了循环里step的值,查询了好久才知道出错的原因。

啊哈算法第四章第二节解救小哈Java实现的更多相关文章

  1. 微信小程序教学第四章第二节(含视频):小程序中级实战教程:详情-视图渲染

    § 详情 - 数据渲染 本文配套视频地址: https://v.qq.com/x/page/x055550lrvd.html 开始前请把 ch4-2 分支中的 code/ 目录导入微信开发工具 这一节 ...

  2. 《学习OpenCV》练习题第四章第二题

    #include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...

  3. Ionic 入门与实战之第二章第二节:Ionic 环境搭建之 Ionic Lab 使用

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第二节,主要对 Ionic Lab 工具作了介绍,并讲解了其使用方法,这也是一个开发 Ionic 比较好的调试工具. 原文发表于 ...

  4. “全栈2019”Java第四章:创建第一个Java程序

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. 算法导论(第三版)Exercises4.2(第四章二节)

    4.2-1(计算结果) 18  14 62  66 4.2-2(Strassen算法计算矩阵乘法) void multiplyMatrix(int a[], int b[], int n, int r ...

  6. 第二章——第二节 IPC机制的概述和使用

    一.Serialiable与Paracle ①.作用    ②.使用 二.Binder与AIDL ①.各自的作用 三.如何使用IPC机制 举例 四.IPC机制的原理 ①.流程图  ②.自己编译自动生成 ...

  7. 微信小程序教学第四章第一节(含视频):小程序中级实战教程:详情-页面制作

    详情 - 页面制作 本文配套视频地址: https://v.qq.com/x/page/o0555o20xjd.html 开始前请把 ch4-1 分支中的 code/ 目录导入微信开发工具 这一章节中 ...

  8. 前端:CSS第四章第一节

    块级元素一行只有一个,比如P标签 CSS层叠样式表,意思就是样式是可以叠加的,比如下面的代码 <style> .ok{ color: aqua; } .blue{ color: #5283 ...

  9. tensorflow2.0学习笔记第一章第二节

    1.2常用函数 本节目标:掌握在建立和操作神经网络过程中常用的函数 # 常用函数 import tensorflow as tf import numpy as np # 强制Tensor的数据类型转 ...

随机推荐

  1. github 出现 Permission denied (publickey)

    首先,清除所有的key-pairssh-add -Drm -r ~/.ssh删除你在github中的public-key 用下面的命令生成public key $ ssh-keygen -t rsa ...

  2. 对TSNU网站的初步分析

    这是一个教育网的网站,其中网站的教务子系统,html页面是用表单嵌套来格式化显示样式的,另外还有<div>.<iframe>等等 .在这个上有个form表单,提交的参数有如下几 ...

  3. java基础(一):我对java的三个环境变量的简单理解和配置

    首先说说java的三个环境变量:java_home,classpath,path java_home:jdk的安装路径[你一层一层点开安装路径,直到当前目录有一个bin目录,然后在地址栏里面右键单击复 ...

  4. sosreport-汇总收集linux系统信息

    有时候我们想将Linux服务器信息一次性查询并导出发送给他人,我们可以使用这个sosreport这个工具 安装  yum install sos -y 收集信息 sosreport 收集到的信息默认保 ...

  5. typeof 子类获取父类

    像这样typeof(Typ).BaseType.Name

  6. 【转】Python高级知识点总结

    一.可迭代对象.迭代器对象和生成器 像list, tuple等这些序列是可以使用for...in ...语句来进行遍历输出的.这是为什么呢?这就需要知道可迭代对象(Iterable).迭代器对象(It ...

  7. Beyond Compare 3添加右键菜单

    目前是在Beyond Compare 3.1.9版本上试验可行,其他版本上尚未测试. 添加右键菜单步骤: 1.新建为.bat后缀的文本,将下面“添加右键菜单批处理”复制到此文本中. 2.将批处理移动到 ...

  8. error: Cannot find OpenSSL's <evp.h> Mac

    问题 mac安装php需要openssl ./configure –with-openssl 报错 error: Cannot find OpenSSL’s 解决 brew install opens ...

  9. VsCode配置go环境及插件安装

    在vscode中安装go插件. 安装git. 在%GOPATH%\src\目录下,建立golang.org文件夹,并再新建x文件夹. 目录为 "%GOPATH\src\golang.org\ ...

  10. python判断平台

    网上找到的判断平台的方法,特此记录 # -*- coding: utf-8 -*- import platform osName = platform.system() if(osName == 'W ...