课堂作业03

设计思路:

(1)将原数组扩展;扩展为原来的2倍减1。

(2)第一个for循环控制数组从哪一数开始进行最大子数组的求和。长度为原数组的长度。

(3)第二个for循环为动态规划求最大子数组。长度为原数组的长度减1.

(4)将求得的最大和用一个数组存储。求该数组的最大值。即为循环数组的子数组的最大和。

源代码:

import java.util.Scanner;
public class MaxOfSubArray2 {
	public static int Max1(int arr1[])
	{
		int arr2[]=new int[2*arr1.length-1];
		for(int i=0;i<arr1.length;i++)
		{
			arr2[i]=arr1[i];
		}
		for(int j=0;j<arr1.length-1;j++)
		{
			arr2[j+arr1.length]=arr1[j];
		}//扩展数组
		int maxsum0=0;
		int maxsum1=0;
		int maxsum[]=new int[arr1.length];
		for(int k=0;k<arr1.length;k++)//从哪一个数开始
		{
			int sum=arr1[k];
		    maxsum1=arr1[k];
			for(int m=k+1;m<arr1.length+k;m++)//动态规划求最大和
			{

			    if(sum<0)
			    {
			    	sum=0;
			    }
			    sum+=arr2[m];
			    if(sum>maxsum1)
				{
					maxsum1=sum;
				}
			}
			maxsum[k]=maxsum1;
		}
		for(int n=1;n<maxsum.length;n++)
		{
			if(maxsum[n]>maxsum[0])
			{
				maxsum0=maxsum[n];
			}
		}
		return maxsum0;

	}
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入数组长度:");
		int n=sc.nextInt();
		int arr[]=new int[n];
		System.out.println("请输入数组元素:");
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		System.out.println("子数组的最大和:"+Max1(arr));
	}

}

程序截图:

时间: 2024-10-15 07:48:50

课堂作业03的相关文章

课堂作业03——淘宝网的质量属性

淘宝网的六个主要质量属性场景描述 1.可用性: 多个用户同时登录,需要庞大的数据处理架构来支撑,淘宝公司的 session框架采用的是client cookie实现,主要将状态 保存到了cookie里面,这样就使得应用节点本身不需要保存任何状态信息,这样在系统用户变多的时候,就可以通过增加更多的应用节点来达到水平扩展的目的. 场景描述: 刺激源 用户 刺激 大量用户群同时登录 制品 存储.数据库 环境 系统运行时 响应 使用多值cookie 响应度量 正常登录,无异常 2.可修改性: 与为诊断缺

软件工程概论课堂作业3

题目:返回一个整数数组中最大子数组的和 要求: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 设计思想: 用户自定义数组长度并依次输入数组元素,设一个全局变量初始化为零的数组a[N],N=10000: 1.因为该数组首尾相接可视作一个环,那么我们需要在一个合适的位置断开,把数组元素展成一条笔直的带子. (1).设用户自定义数组长度为m,输入数组各元素值a[1

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma

课堂作业及 动手动脑问题整理

课堂作业一 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 程序: package com; public class Duixiang { public static void main(String[] args){ duixiang a=new duixiang(); a.out(); duixiang b=new duixiang(); b.out(); } } class duixiang{ stati

课堂作业数组最大和

题目: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选).源代码.结果截图.总结. 设计思想: 1.设计思想: 首先设置两个变量,分别用来存储数组长度也就是number和结果result:然后再通过语句来询问用户需要的数组长度再设个动态数组用来让用户输入数组中的数字,将每一个数值都存放进数组对应位

寒假作业03

寒假作业03 0. 先来闲聊一下 我还记得以前的时候家严经常去某个,呃,著名的电子一条街去买那些各种各样的装系统光盘(或者其他啥的?忘了),基本都是windows的,啥啥纯净版xp,啥雨林木风xp.当然那时候还小,对电脑的印象就是玩游戏,对电脑系统啥的一窍不通(现在也是,哈哈).即便如此,年轻的我还是意识到这些乱七八糟的光盘是有问题的,为啥?装了之后电脑又慢还总死机,于是就再去那条街去买新的盘,如此往复恶性循环,家里老电脑就是这样坏掉的.很明显这个教训并不是十分刻骨铭心,因为新电脑也开始遭受各种

课堂作业01

我们都了解过或在课堂上听说过软件体系架构师这一职业,对我们来说软件体系架构师是一个需要很多经验和技术的职业,也会是很多人奋斗的目标,那么什么是软件体系架构师以及软件体系架构师的职责是什么呢? 软件体系架构师是软件行业中一种新兴职业,是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划.主导系统全局分析设计和实施.负责软件构架和关键技术决策的人员,是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节

Linux平台Makefile文件的编写基础入门(课堂作业)

根据老师的要求,写一个超简单的makefile准备:       准备三个文件:file1.c, file2.c, file2.h       file1.c: #include "file2.h" int main() { printf("print file1$$$$$$$$$$$$$$$$$$$$$$$$\n"); File2Print(); return 0; } file2.h: #include <stdio.h> #ifndef FILE2

课堂作业之寻找水王

•三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 程序设计思想: 将两两不同的id号相抵消,剩的就只能是水王了 程序源代码实现 import java.util.Scanner; public class shuiwang{ public stati