博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
返回一个整数数组最大子数组的和
阅读量:4549 次
发布时间:2019-06-08

本文共 1536 字,大约阅读时间需要 5 分钟。

 

第一种算法(很麻烦)

设计思想:

1.通过随机数产生十个数。

2.声明一些变量,包括:

flag —— 用来控制子数组的长度,从一到十递增。

sum —— 记录最大子数组的和,初始值为a[0]。

s_temp —— 记录不断更新的子数组的和。

3.通过一个while语句和两个for循环实现。需注意第二个for循环中,为防止数组越界,使用Math.min方法。

源代码:

int a[] = new int[10];		for(int i = 0;i < 10;i++){			a[i] = (int)(Math.random() * 20 - 10);   // 产生的随机数范围在-9 ~ 9		}		System.out.print("产生的随机数的值为:");		for(int i = 0;i <10;i++){			System.out.print(a[i] + " ");		}		System.out.print("\n");				int sum = a[0],s_temp = 0,flag = 1;		while(flag < 10){			for(int j = 0;j < 10;j++){				s_temp = 0;				for(int k = j;k < Math.min(j+flag,10);k++){					s_temp = s_temp + a[k];				}				if(s_temp > sum){					sum = s_temp;				}			}			flag++;		}		System.out.println("最大子数组的和为:" + sum);			}

  

 

运行结果:

 

第二种方法:

设计思想:

当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。所以,当接下来的和使现在的和更小时,抛弃它。当目前的和大于最大值,更新最大值。

源代码:

1         int a[] = new int[10]; 2         for(int i = 0;i < 10;i++){ 3             a[i] = (int)(Math.random() * 20 - 10);   // 产生的随机数范围在-9 ~ 9 4         } 5         System.out.print("产生的随机数的值为:"); 6         for(int i = 0;i <10;i++){ 7             System.out.print(a[i] + " "); 8         } 9         System.out.print("\n");10         int sum = a[0],s_temp = a[0];11         for(int i = 1 ;i < 10;i++){12             s_temp = s_temp + a[i];13             if(s_temp < a[i]){14                 s_temp = a[i];16             }17             if(s_temp > sum){18                 sum = s_temp;21             }22         }23         24         System.out.println("最大子数组的和为:" + sum);

 

转载于:https://www.cnblogs.com/jj352095583/p/4363841.html

你可能感兴趣的文章
18软工实践-第三次作业-结对项目1
查看>>
redis
查看>>
linux系统安全设置策略
查看>>
js简单用法积累
查看>>
c++关于map的find和count的使用
查看>>
cookie
查看>>
深入理解盒子模型
查看>>
开发者中心支持创建中控产品啦,邀你来公测
查看>>
ASCII 、UTF-8、Unicode都是个啥啊,为啥会乱码啊?
查看>>
宠物商城后台管理系统(springMVC+Mybatis+数据库)
查看>>
Rails 应用的一些gems ,插件
查看>>
cors的实现原理
查看>>
输出两个字符串的最长公共子串、最长公共子序列
查看>>
2019.01.04 洛谷 P4721 【模板】分治 FFT
查看>>
Linux系统自动备份的Shell
查看>>
20个Linux防火墙应用技巧
查看>>
JavaScript学习摘要-表单
查看>>
解决SQLite中的 database is locked 分类: Andr...
查看>>
Quagga添加自己的命令
查看>>
Linux 指令前加反斜杠 ‘\’
查看>>