欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

一个整形数组中最大值求和问题(3)

发布时间:2025/6/17 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 一个整形数组中最大值求和问题(3) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

新要求:

在“一个整形数组中最大值求和问题(2)”的基础之上,加入了新要求。

将一位数组变成环形数组。

 

首先在自己看到这道题目的时候,并没有什么思路,然后老师一点一点的旁敲侧击,自己又在纸上动手画了画,最后自己实现了这个项目。值得说明的一点是,自己虽然能够实现,但是当与同学们上台分享时,并没有很好的表达出自己的意思,一方面,自己的语言表达能力还很欠缺,在日后的学习生活中要有意识地去改善这一方面。另一方面,自己地逻辑思维不是很清晰,正如主任所说的那样“这只是一个小小地项目都没能很好的表达出自己,那上百行地大项目,更说不出来,也做不出来了。”自己地逻辑思维能力,也要逐步提高。

 

设计思想:

环形数组,则程序需要在源程序的基础之上,加入实现最后一个数加开头数地想法,即实现n->(n-1)的计算。

首先在原代码基础之上,加入变量a(用来表示数组的长度,由于数组从0开始表示,故赋初值-1),然后当数组遍历完成一次之后,将已有的sum值与(sum+c[0])、a与数组长度n两两进行比较,两个条件都满足时,才执行,将已有的sum值接着从头开始相加的代码,且每执行一次,均需判断a与数组长度的关系。一但a大于等于数组长度n,则跳出循环,此时的f为子数组和的最大值。

实验截图:

源代码:

import java.util.Scanner;public class sum02 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);System.out.println("请输入数组的长度为:");int n=sc.nextInt();int[] c = new int[n];System.out.println("请输入"+n+"个整数");for(int i=0;i<n;i++){c[i] = (int) sc.nextLong();}int a=-1;//a值用来表示子数组的长度int f=0;//定义整形变量f,为子数组最大值int sum=0;//定义整形变量sum,为子数组求和for(int i=0;i<n;i++){sum = sum+c[i];if(sum < 0){sum=0;}if(sum > f){f = sum;}a=a+1;}//System.out.println(a);if( a<n && (f+c[0])>f) {for(int i=0;i<n;i++){sum = sum+c[i];if(sum < 0){sum=0;}if(sum > f){f = sum;}a=a+1;if(a >= n) {break;}}}if(sum == 0){for(int i=0;i<n;i++){if(i == 0){f = c[i];}if(f < c[i]){f = c[i];}}}System.out.println("该数组的子数组之和的最大值为:"+f);}}

 

转载于:https://www.cnblogs.com/Qi77/p/10596235.html

总结

以上是生活随笔为你收集整理的一个整形数组中最大值求和问题(3)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。