import java.util.Random;
class MatrixTower {
public static void main(String[] args) {
//声明一个矩阵空间
int[][] matrix = new int[][]{
{-1,12,4,0,7,-5,6,7,7,4,0,0,-5,2,-4},
{-1,65,4,0,7,-5,6,1,7,4,0,0,-15,1,-4},
{-1,10,4,0,8,-5,2,5,17,4,0,0,-5,6,-4},
{-1,2,4,0,14,-5,6,3,7,4,0,0,-34,2,-4},
{-1,47,4,0,26,-5,6,9,7,4,0,0,-9,4,-4},
{-1,0,14,0,7,-5,6,8,10,4,0,0,4,11,201},
};
//矩阵行长度
int tmp=matrix[0].length;
int u = matrix.length-1;
int v = matrix[u][tmp/2]-1;
// 需求: 最下行 中心列 为中心点 => 起始点
int startPoint = matrix[u][v];
//起始点的行
//起始点的列
int startPointColumn = 0;
//得到起始点的列
for (int i = 0; i <tmp; i++) {
if (matrix[u][i] == startPoint) {
startPointColumn = i;
}
}
//随机数类
Random random = new Random();
//随即矩阵行
int randomRow = random.nextInt(matrix.length - 1);
//随机矩阵列
int randomColumn = random.nextInt(tmp/2-1);
maxNumberSum(startPoint, u, startPointColumn, randomColumn, matrix);
}
//求移动路径sum
private static void maxNumberSum(int startPoint, int startPointRow, int startPointColumn, int randomColumn, int[][] matrix) {
System.out.println("当前 起始点:" + startPoint);
//左移动 matrix[length - 1][length / 2 - -] startPointColumn--
// 右移动 matrix[length - 1][length / 2 ++] startPointColumn++
// 上移动 matrix[(length - 1)--][length / 2 ] startPointRow--
//这里默认为 上移动: matrix[(length - 1)--][length / 2] startPointRow--
System.out.println("矩阵起始行:" + startPointRow);
System.out.println("矩阵起始列:" + startPointColumn);
System.out.println("随机列:" + randomColumn);
System.out.println("移动方式 右移动:");
//路径和
int sum = 0;
do {
int num = matrix[startPointRow][++startPointColumn];
System.out.println("向右移动"+randomColumn + "次 经过 元素:" + num);
sum += num;
} while (--randomColumn != 0);
startPoint += sum;
System.out.println("路径求合:" + startPoint);
}
}
JAVA 二维数组 矩阵练习
最新推荐文章于 2024-08-06 15:02:11 发布