package com.work.home_4;
import java.util.ArrayList;
import java.util.List;
/**
* 动态规划算法:一个n阶整数矩阵,给定一个整数k,求出最长的一条线(子行,子列,子斜线),其和小于等于k
* 算法说明:对于给定的n阶矩阵,实现了对行、列、正斜线(\)的查找,由于反斜线(/)的查找与正斜线相似,因此未实现;
* 另,在分别对上三角和下三角实行查找时,正对角线重复了一次
* @author xuejun
*
*/
public class Dynamic {
public static void dynamic(int[][] arr, int k) {
// 用于输出最长线的长度
int temp = 0;
// 记录最长线的长度
int max;
/*
* 创建二维数组,数组长度为2x2,用于接收小于等于k的最长线的数组下标,
* 开始下标为((0,0),(0,1)),结束下标为((1,0),(1,1))
*/
int[][] b = new int[2][2];
// 计算数值的总和
int sum;
// 创建集合,把最长线的数组下标添加到集合中
List<int[][]> list = new ArrayList<>();
// 创建集合,把最长线的长度值添加到集合中
ArrayList<Integer> maxlist = new ArrayList<>();
/*
* 找行的最长线,i 表示行,j 表示列
*/
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
import java.util.ArrayList;
import java.util.List;
/**
* 动态规划算法:一个n阶整数矩阵,给定一个整数k,求出最长的一条线(子行,子列,子斜线),其和小于等于k
* 算法说明:对于给定的n阶矩阵,实现了对行、列、正斜线(\)的查找,由于反斜线(/)的查找与正斜线相似,因此未实现;
* 另,在分别对上三角和下三角实行查找时,正对角线重复了一次
* @author xuejun
*
*/
public class Dynamic {
public static void dynamic(int[][] arr, int k) {
// 用于输出最长线的长度
int temp = 0;
// 记录最长线的长度
int max;
/*
* 创建二维数组,数组长度为2x2,用于接收小于等于k的最长线的数组下标,
* 开始下标为((0,0),(0,1)),结束下标为((1,0),(1,1))
*/
int[][] b = new int[2][2];
// 计算数值的总和
int sum;
// 创建集合,把最长线的数组下标添加到集合中
List<int[][]> list = new ArrayList<>();
// 创建集合,把最长线的长度值添加到集合中
ArrayList<Integer> maxlist = new ArrayList<>();
/*
* 找行的最长线,i 表示行,j 表示列
*/
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {