zoukankan      html  css  js  c++  java
  • 软件工程结对作业01---返回一个整数数组中最大子数组的和

    题目:

    设计思想:

    先输入数组的长度n,创建一个2n-1长的数组(循环数组,循环前n-1个数),输入数字并同步到后面循环的数。最大子数组只能以正数开头结尾,查找前n个数中的正数,以其为开头,n为长度的数组中找最大子数组;若无正数找出最大的负数。设置开头和长度作为子数组输出的标准,并在得出较大子数组时修改数据;最后输出最大子数组。

    出现的问题

    全负数时,长度设为1时,只对第一个最大有效。后改为0。 

    可能的解决方案(多选):

    找出所有正数,以其为头尾得出最大子数组;全负数时找最大负数。

    源代码:

    package shuzu;
    
    import java.util.Scanner;
    
    public class max {
    
    	public static void main(String[] args) {
    		System.out.println("请输入数组长度:");
    		Scanner s = new Scanner(System.in);
    		int n = s.nextInt();//数组长度
    		int [] a = new int [2 * n - 1];//循环数组转化为普通数组
    		
    		System.out.println("请输入数组:");
    		for(int i = 0;i < n;i++)
    		{
    			a[i] = s.nextInt();
    			if(i < n - 1)
    				a[i + n] = a[i];//重复前n-1个
    		}
    		
    		int max = a[0], begin = 0, length = 0;
    		//求最大子数组
    		for(int i = 0;i < n;i++)
    		{
    			if(a[i] > 0)//最大子数组头尾为正数
    			{
    				int m = 0;
    				for(int j = 0;j < n;j++)//加后面n-1个数之内,查看最大子数组
    				{
    					m += a[j + i];
    					if(m > max)
    					{
    						begin = i;
    						length = j;
    						max = m;
    					}
    				}
    			}
    			else//全为负数,找出最大负数
    			{
    				if(a[i] > max)
    				{
    					begin = i;
    					length = 0;
    					max = a[i];
    				}
    			}
    		}
    		
    		System.out.println("数组最大子数组:");
    		for(int i = begin;i <= begin + length;i++)
    			System.out.print(a[i] + " ");
    		s.close();
    	}
    }
    

      

    结果截图:

                    

    总结:

    1.在书写代码时需要有详细的计划,这样做起来会很省力。

    2.双人讨论能促进思想的碰撞,得出更好的idea。

    3.测试时要实验各种数据,得出软件的不足之处,进行修改。

  • 相关阅读:
    spring 自定义事件发布及监听(简单实例)
    解析spring中的BeanFactory(看完会有收获)
    如何提高锁的性能
    spring MVC模式拦截所有入口方法的入参出参打印
    java基于feemarker 生成word文档(超级简单)
    数据库事务特性汇总
    如何让window.open()以post请求方式调用(巧妙解法)
    a标签添加背景图片的解决办法
    深入理解Django Admin的list_display, list_filter和raw_id_fields,filter_horizontal选项
    django配置log日志
  • 原文地址:https://www.cnblogs.com/fylove/p/6652531.html
Copyright © 2011-2022 走看看