我正试图用递归来解决这个问题。

问题是:对于二维正整数数组,我如何返回最长路径(步骤),以便最长路径的每个单元格中的值是从整数的降序序列开始的,并且每个单元格和单元格之间的差异是一个给定的数字(num)。

假定

n

是单元格的值,所以(

n

-num)是一个正数(不是零)。

我不能使用任何循环(for,while,…等)

方法:

public static int longestPath(int matrix[][],int number){...

return(__overloading__);

}

例如

:

int number=1;

int [][]matrix ;

matrix = new int[][]{{8, 15, 20, 33, 35},

{60, 59, 58, 32, 31},

{59, 17, 57, 56, 55},

{55, 15, 13, 58, 16}};

System.out.print(" longestPath= "+ longestPath(matrix, num));

}

如果我们寻找有差异的最长路径

= 1

1-在细胞中

矩阵〔0〕〔3〕

路径长度为3,此路径中的值为33->32->31以

矩阵〔1〕〔4〕

2-细胞

矩阵〔1〕〔0〕

]路径长度为6,路径60->59->58->57->56->55中的值以

矩阵〔2〕〔4〕

细胞中的3

矩阵〔1〕〔0〕

路径长度为2,此路径中的值为60->59以

矩阵〔2〕〔0〕

因此,该方法必须返回最长路径开关6

如果我们寻找有差异的最长路径

= 2

1-在细胞中

矩阵〔2〕〔1〕

路径长度为3,此路径中的值为17->15->13以

矩阵〔3〕〔2〕

方法必须返回其3的最长路径。

我的非工作代码:

public class CC {

public static int longestPath (int arr[][] , int num){

return longestPath(arr,arr.length-1,arr[0].length-1,num,0);

}

public static int longestPath (int arr[][],int rows,int cols,int num,int max){

System.out.println("==> longestPath() arr value=" + arr[rows][cols] + " rows:"+rows + " cols:"+cols + " max:"+max);

if (cols ==0 && rows != 0 ){

cols = arr[0].length-1;

rows--;

}

if (rows ==0 && cols==0 ){

System.out.println("finish");

return 0;

}

int steps = searchPath(arr,rows,cols,num,max);

if (steps > max) max=steps;

longestPath(arr,rows,cols-1,num,max);

return max ;

}

public static int searchPath(int arr[][],int rows,int cols,int num ,int counter){

System.out.println("searchPath() arr value=" + arr[rows][cols] + " rows:"+rows + " cols:"+cols);

int left=1,right=1,up=1,down=1;

if ((cols != 0) && arr[rows][cols] - num == arr[rows-1][cols] ){ // checking up cell

counter++;

up = searchPath(arr,rows-1,cols,num,counter);

}

if ((rows != arr.length-1) && arr[rows][cols] - num == arr[rows+1][cols] ){ // checking down cell

counter++;

down = searchPath(arr,rows+1,cols,num,counter);

// return counter;

}

if ((cols != 0) && arr[rows][cols] - num == arr[rows][cols-1]){ // checking left cell

counter++;

left = searchPath(arr,rows,cols-1,num,counter);

//return counter;

}

if ((cols != arr[0].length-1) && arr[rows][cols] - num == arr[rows][cols+1] ){ //checking right cell

counter++;

right = searchPath(arr,rows,cols+1,num ,counter);

//return counter;

}

if ((left > right) && (left > up) && (left > down)) // if left cell is bigger than all other direction return left

return left;

if ((right > left) && (right > up) && (right > down))

return right;

if ((down > up) && (down > right) &&( down > left))

return down;

if ((up> down) && (up > right) && (up>left))

return up;

return 0;

}

}

在编写代码时,我遇到了很多运行问题

我做错什么了?

提前谢谢

java图遍历求最长路径_如何在Java中使用递归实现矩阵中最长路径的返回相关推荐

  1. java有没有求组合的函数_如何在Java 8中使用compose和andThen组合函数

    在这篇文章中,课课家将讨论利用java8的Function接口提供的两个组合函数--compose和andThen来实现函数的组合. 什么是函数组合? 首先需要创建一些小的可重用函数,然后将这些小函数 ...

  2. java对密码进行加密的方法_如何在JAVA中使用MD5加密对密码进行加密

    如何在JAVA中使用MD5加密对密码进行加密 发布时间:2020-11-25 17:12:40 来源:亿速云 阅读:118 作者:Leah 本篇文章为大家展示了如何在JAVA中使用MD5加密对密码进行 ...

  3. java压缩文件能否不压缩路径_如何在Java中压缩文件而不包含文件路径

    例如,我要压缩存储在/Users/me/Desktop/image.jpg中的文件 我做了这个方法: public static Boolean generateZipFile(ArrayList s ...

  4. java将输出结果写入csv文件_如何在Java中将数据写入.csv文件?

    名为OpenCSV的库提供API来从.CSV文件读取数据或将数据写入.CSV文件.此处说明了如何使用Java程序写入.csv文件的内容. Maven依赖 com.opencsv opencsv 4.4 ...

  5. java ssh连接 如何不使用密码_如何在java中为ssh连接设置密码

    我想用 java代码连接我的unix服务器.首先它将连接到我的服务器位置.在里面,它将连接到我的服务器名称.但那时它会要求确认(是/否)和密码我不知道该怎么做? 这是我所做的代码.请帮我解决这个问题 ...

  6. java中将字符串顺序反传转_如何在Java中将字符串序列化的Erlang术语反序列化为JInterface对象?...

    我的接口系统提供了来自Erlang世界的结果,该结果发送了erlang术语的字符串表示形式,例如元组列表: [ {"key1" , ["AAA","B ...

  7. java如何新建一个空的压缩包_如何在Java中创建zip文件

    慕哥6287543 Java 7内置了ZipFileSystem,可用于从zip文件创建,写入和读取文件.Java Doc:ZipFileSystem ProviderMap env = new Ha ...

  8. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  9. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

    如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...

最新文章

  1. Vue.js 学习视频和书籍【推荐】
  2. 【Python7】csv/excel/matplotlib,排序/树遍历,线/进程,文件/xml操作,百度人脸API,aiohttp/hal/restful/curl
  3. vfp 8.0中image控件的属性:RotateFlip
  4. linux——线程通信(1)
  5. python 3.6.5 模拟银行转账系统
  6. 用1000W破解字典破解pdf文档(提供1000W破解字典)
  7. 2021年微信视频号生态趋势调查报告|友望数据发布
  8. 坐标拾取器功能实现demo
  9. xmind怎样画流程图_【工作流程图】如何用xmind做流程图
  10. cad画钟表_coreldraw怎么画钟表?coreldraw画钟表教程
  11. OPA:open policy agent简介
  12. 2021年茶艺师(初级)考试资料及茶艺师(初级)考试技巧
  13. 数学连乘和累加运算符号_3,7,5之间加数学运算符号使结果等于8?
  14. ubuntu 中w指令中的IDLE是什么意思
  15. 删除的微信聊天记录如何恢复
  16. 2.6. 字符类型与字符编码
  17. mess组网 中继_Mesh组网技术登场,中继电力猫都弱爆
  18. Unity引擎游戏优化插件MeshSimplify使用说明
  19. html圆点跟链接线,html5 canvas简洁的圆点线动画特效
  20. 4-20mA模拟量信号如何区别有源还是无源?

热门文章

  1. Floyd算法的动态规划本质
  2. nn.Sequential(*modules)
  3. CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解
  4. autolisp统计相同元素个数_统计学习基础知识
  5. linux实验三shell程序设计,实验三 LINUX SHELL编程
  6. 【多线程高并发】jcstress并发测试工具使用教程详解
  7. ElasticSearch-7.10版本最新万字长文教程【距离搞懂ELK核心你只差这一片文章】
  8. 软件测试——StringFunction测试
  9. 《操作系统》实验报告——进程调度的模拟
  10. mysql建表用的什么语句_mysql建表常用sql语句个人经验分享