定义一个m行n列的二维数组a,数组中的每个位置都放入的是1到9之间的随机整体数,寻找一条从左上角a[0][0]到右下角arr[m-1][n-1]的路线,使得沿路经过的数组中的整数之和最小。

   日期:2020-09-04     浏览:91    评论:0    
核心提示:package com.softeem.exam2;import java.util.ArrayList;import java.util.List;public class Test8 { public static void main(String[] args) { //定义一个二维数组 int[][] nums = new int[5][6]; //通过循环随机向二维数组中添加数据 for (int i = 0; i < nums.length; i++) {
package com.softeem.exam2;

import java.util.ArrayList;
import java.util.List;

public class Test8 {

	public static void main(String[] args) {

		//定义一个二维数组
		int[][] nums = new int[5][6];
		//通过循环随机向二维数组中添加数据
		for (int i = 0; i < nums.length; i++) {
			for (int j = 0; j < nums[i].length; j++) {
				nums[i][j] = (int)(Math.random()*9+1);
			}
		}
		//显示二维数组中元素
		for (int i = 0; i < nums.length; i++) {
			for (int j = 0; j < nums[i].length; j++) {
				System.out.print(nums[i][j]+"\t");
			}
			System.out.println();
		}

		//声明数组保存数组中相邻三个元素
		int[] nos = new int[3];
		//声明一个集合保存找到的最小数字
		List<Integer> lists = new ArrayList<Integer>();
		//将开始位置数字放入集合中
		lists.add(nums[0][0]);
		//声明变量保存所在位置
		int m = 0, n = 0;
		//通过循环找出路径
		while(m <= 4 && n <= 5){
			
			//当没走到最边上的时候
			if(m < 4 && n < 5){	
				//将数组中相邻三个元素保存到数组中
				nos[0] = nums[m][n+1];
				nos[1] = nums[m+1][n];
				nos[2] = nums[m+1][n+1];
				//遍历数组找出最小的数及下标
				int min = nos[0];
				int index = 0;
				for (int k = 0; k < nos.length; k++) {
					if(min >= nos[k]){
						min = nos[k];
						index = k;
					}
				}	
				
				//判断最小路线并将数字保存到集合中,重新定位所在位置
				if(index == 0){
					lists.add(nos[0]);
					n += 1;
				}else if(index == 1){
					lists.add(nos[1]);
					m += 1;
				}else{
					lists.add(nos[2]);
					m += 1;
					n += 1;				
				}				
			}else if(m < 4 && n == 5){		//当走到最右边列上的时候
				lists.add(nums[m+1][n]);
				m += 1;
			}else if (m == 4 && n < 5){		//当走到最下边行上的时候
				lists.add(nums[m][n+1]);
				n += 1;
			}else{							//当走到右下角的时候,退出循环
				break;
			}
		}	
		
		//遍历集合输出最终经过路线
		System.out.print("\n最小和是:");
		for (int j = 0; j < lists.size(); j++) {
			
			if(j == lists.size()-1){				
				System.out.print(lists.get(j));
				break;
			}			
			System.out.print(lists.get(j)+"+");
		}		
	}
}

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服