如何求sum数组公式中和为sum的元素最少的一种方案

求连续子数组最大和,两种算法
一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值
下面是一个效率很低的方法两层循环,思路是分别以每一个元素为起点,定义一个temp值保存现有的最大和,如果遍历到的连续子数组的和大于temp那么则交换两者的值。
import java.util.*;&
class& BigChild&
&&& public static void main(String[] args)&&
&&&&&&& int temp=0;&
&&&&&&& Scanner sc=new Scanner(System.in);&
&&&&&&& String str=sc.nextLine();&
&&&&&&& String[] st=str.split(&,&);&
&&&&&&& int[] arr=new int[st.length];&
&&&&&&& for(int i=0;i&st.i++)&
&&&&&&& {&
&&&&&&&&&&& arr[i]=new Integer(st[i]);&
&&&&&&& }&
&&&&&&& for(int i=0;i&arr.i++)&
&&&&&&& {&&&&&&&&
&&&&&&&&&&& //sum一定要在这里定义,否则会变成一个累加值&&
&&&&&&&&&&& int sum=0;&&&
&&&&&&&&&&& for(int j=i;j&arr.j++)&
&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& sum+=arr[j];&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& if(sum&temp)&
&&&&&&&&&&&&&&& temp=&
&&&&&&&&&&& }&
&&&&&&& }&
&&&&&&& System.out.println(temp);&
import java.util.*;
class& BigChild
&public static void main(String[] args)
&&int temp=0;
&&Scanner sc=new Scanner(System.in);
&&String str=sc.nextLine();
&&String[] st=str.split(&,&);
&&int[] arr=new int[st.length];
&&for(int i=0;i&st.i++)
&&&arr[i]=new Integer(st[i]);
&&for(int i=0;i&arr.i++)
&&&//sum一定要在这里定义,否则会变成一个累加值
&&&int sum=0;&
&&&for(int j=i;j&arr.j++)
&&&{&&&&&&&&&
&&&&sum+=arr[j];&&&&
&&&&if(sum&temp)
&&System.out.println(temp);
下面是一个只有一层循环的算法
思路是当前面的几个数,加起来后,temp&0后, 把temp重新赋值,置为下一个元素,temp=a[i]。当temp&sum,则更新sum= 若temp&sum,则sum保持原值。
import java.util.*;&
class& BigChild&
&&& public static void main(String[] args)&&
&&&&&&& int temp=0;&
&&&&&&& int sum=0;&
&&&&&&& Scanner sc=new Scanner(System.in);&
&&&&&&& String str=sc.nextLine();&
&&&&&&& String[] st=str.split(&,&);&
&&&&&&& int[] arr=new int[st.length];&
&&&&&&& for(int i=0;i&st.i++)&
&&&&&&& {&
&&&&&&&&&&& arr[i]=new Integer(st[i]);&
&&&&&&& }&
&&&&&&& for(int i=0;i&arr.i++)&
&&&&&&& {&&&&&&&&
&&&&&&&&&&& if(temp&0)&
&&&&&&&&&&&&&&& temp=arr[i];&
&&&&&&&&&&& else&
&&&&&&&&&&&&&&& temp+=arr[i];&
&&&&&&&&&&& if(temp&sum)&
&&&&&&&&&&&&&&& sum=&
&&&&&&& }&
&&&&&&& System.out.println(sum);&
import java.util.*;
class& BigChild
&public static void main(String[] args)
&&int temp=0;
&&int sum=0;
&&Scanner sc=new Scanner(System.in);
&&String str=sc.nextLine();
&&String[] st=str.split(&,&);
&&int[] arr=new int[st.length];
&&for(int i=0;i&st.i++)
&&&arr[i]=new Integer(st[i]);
&&for(int i=0;i&arr.i++)
&&&if(temp&0)
&&&&temp=arr[i];
&&&&temp+=arr[i];
&&&if(temp&sum)
&&System.out.println(sum);博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)IT笔试题(3)
package com.zxt.
import java.util.ArrayL
import java.util.A
* 求数组中和为给定值的所有子序列
* 如:数组[1,2,3,4,5,6],sum=7时,满足条件的子数组有[1,2,4],[3,4],[2,5],[1,6];
* @author zxt
public class FixedSumSequence {
public static void main(String[] args) {
int[] arr = { 3, 2, 5, 5, 5, 6, 1, 4, 4 };
// 数组升序排序
Arrays.sort(arr);
ArrayList&ArrayList&Integer&& lists = new ArrayList&ArrayList&Integer&&();
boolean[] visited = new boolean[arr.length];
// 求和为sum的所有组合数
backTrack(arr, visited, 0, 0, 7, lists);
System.out.println(lists);
System.out.println(lists.size());
// 求一个数组中和为定值的所有子序列
public static void backTrack(int[] input, boolean[] visited, int n, int sum, int key,
ArrayList&ArrayList&Integer&& lists) {
// 如果条件为:if (sum % key == 0 && sum != 0) 则是求所有和为定值整数倍的序列
if (sum == key) {
ArrayList&Integer& list = new ArrayList&Integer&();
for (int j = 0; j &= j++) {
if (visited[j]) {
list.add(input[j]);
lists.add(list);
for (int i = i & input. i++) {
if (!visited[i]) {
sum += input[i];
visited[i] =
if (i != input.length - 1) {
backTrack(input, visited, i + 1, sum, key, lists);
backTrack(input, visited, i, sum, key, lists);
visited[i] =
sum -= input[i];
// 重复的元素只统计一次,否则会出现重复(而次操作的前提是,序列已经排序。所以参数input数组是排序好的)
while (i & input.length - 1 && input[i] == input[i + 1]) {
文章:20篇
阅读:10226
文章:15篇
阅读:51044
阅读:38222
文章:16篇
阅读:44386
文章:28篇
阅读:19300javascript 编写一个函数sum()用于求和。_百度知道
javascript 编写一个函数sum()用于求和。
编写一个函数sum()用于求和,在函数定义中指定一个形式参数代表传入的数组,创建由一系列数值组成的数组,调用sum()函数求该数组所有元素的和。
我有更好的答案
script type=&text/script&&function sum(list){return eval(测试alert(sum([1,4,9,16]));&&#47.join(&+&));}//javascript&quot
采纳率:46%
&&#47.join(&+& function sum(list){ return eval(&gt,4&script type=&text/ 楼上的非常正确&简单;)); } //测试 alert(sum([1;script&gt,9,16]));javascript&quot
写的很不错嘛
为您推荐:
其他类似问题
您可能关注的内容
javascript的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 python sum 数组 列 的文章

 

随机推荐