• 返回一个整数环形数组中最大子数组的和及第六周学习进度


    1、设计思想:

        1)定义一个整数,用来表示数组中元素的个数;

        2)定义数组a,并利用随机数的方法来产生对应的元素;

        3)在定义一个数组b,其中数组b中元素是数组啊中元素重复的两倍;

        4)利用对应的算法,计算数组b中子数组的最大值,即为环形数组中子数组的最大值。

    2、出现的问题:

        计算环形数组的算法存在问题,对于有些数组就可以正确算出子数组的最大值,而有些随机产生的数组择不能算出,出现了数组下标溢出的错误。

        截图:

    3、可能的解决方案:无

    4、源代码:

    package demo;
    
    import java.util.Scanner;
    public class gailun {
    	public static void main(String args[]){
    		int num;
    		Scanner in=new Scanner(System.in);
    		System.out.println("请输入数组中元素的个数:");
    		num=in.nextInt();
    		int []a=new int[num]; //定义数组a
    		for(int i=0;i<num;i++){
    			a[i]=(int)(Math.random()*20-10); //产生的随机数范围在-9~9
    		}
    		System.out.println("产生的数组元素的值为:");  //输出数组a中的元素
    		for(int i=0;i<num;i++){
    			System.out.print(a[i]+" ");
    		}
    		System.out.print("
    ");
    		int []b=new int[a.length*2];  //定义一个数组b,b的长度为a的两倍,且b中的元素为a中元素重复两次
    		System.out.println("生成的环形数组为:");
    		for(int i=0;i<b.length;i++){
    			b[i]=a[i%a.length];
    			System.out.print(b[i]+" ");
    		}
    		System.out.print("
    "); 
    		
    		int sum=b[0],s_temp=b[0];//将数组最大值初始为b数组中第一个元素
    		int s=0;
    		int i=1;
    		while(i<b.length/2+s)
    		{  
    			s_temp=s_temp+b[i];
    			if(s_temp<b[i])
    			{
    				s_temp=b[i];
    				s=i;
    			}
    			if(s_temp>sum)
    			{
    				sum=s_temp;
    			}
    			i++;
    		}
    		System.out.println("最大的子数组为:"+sum);
    	}	
    }
    

    5、结果截图:

    6、总结

        在这次寻找环形数组中子数组的最大值实验中,体现了两人合作以及编程之前相应思路的重要性,在实际动手编写程序的时候,我们要先有相应的思路来大致解决对应的任务,对于代码的结构有初步的了解,设想一下对应的算法结构以及可能会出现的问题,接下来就要实际去操作,对于出现的不同的问题,我们再去想方法去解决。其次便是团队合作的重要,在讨论的过程中,两个人相互讲述自己的思想,对于同一个问题有着不同的见解,同时也展现了不同的思路。虽然程序并不和很难,但细节的地方还是有待完善。

    第七周学习进度条

    日期

    起始时间

    净时间

    活动

    了解到的知识点

    代码量

    周一

    18:00-22:00

    4hours

    上网查询资料,书写博客,数组代码

    二维最大子数组的设计思路和实现方式

    300

    周二

    20:00-23:00

    3hours

    登录、注册界面

    登录界面的servlet

    350

    周三

    14:30-18:30

    4hours

    Web大作业,上网查询资料

    Javabean使用的方法

    250

    周四

    19:00-21:30

    2.5hours

    上网查询资料

    数据库与代码之间的连接

    200

    周五

    20:00-10:00

    2hours

    博客的书写

    Servlet的使用

    200

    周末

    8.5hours

    代码书写

    二位最大子数组的实现

    260

    合计

    24hours

     
  • 相关阅读:
    0129 System类 Math类 Arrays类 大数据运算
    0127 基本类型包装类
    'telnet' 不是内部或外部命令,也不是可运行的程序 解决方案
    删除时报org.springframework.dao.DataIntegrityViolationException
    mapper自动识别驼峰配置 spring MVC
    spring Security如何debug源码
    公司tomcat项目启动
    java.util.ConcurrentModificationException: null 异常解决
    @Transactional 学习
    mangoDB初探
  • 原文地址:https://www.cnblogs.com/th1314/p/6636539.html
Copyright © 2020-2023  润新知