猿问

求最大序列和

题目

输入一个长度为 n 的整数序列,从中找出一段不超过 m 的连续序列,使得找到的整个序列和最大。
例如:1,-3,5,1,-2,3
当 m=4 时,s=5+1-2+3=7
当 m=2 或 m=3 时,s=5+1=6

程序要求:

输入:
第一行输入两个数 n,m
第二行有 n 个数
输出:
一个数(m 个数的最大连续序列和)
样例输入
6 4
1 -3 5 1 -2 3
样例输出
7

说明

java/c 都可以我只学了点 js 所以用了 js

我的代码如下:

难道是push的问题吗 求解救 求别嫌弃quq

翻翻过去那场雪
浏览 588回答 1
1回答

30秒到达战场

你的算法有点小问题,sum需要每次重新赋值为0的。下面是完整的代码,用input和console比较友好一些。<html><head>&nbsp; &nbsp; <meta charset="utf-8" />&nbsp; &nbsp; <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">&nbsp; &nbsp; <title></title>&nbsp; &nbsp; <style type="text/css">&nbsp; &nbsp; &nbsp; &nbsp; html, body {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: 100%;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; overflow: hidden;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; * {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; margin: 0;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; padding: 0;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; input {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; display: block;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: 300px;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line-height: 30px;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; margin: 10px;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; padding-left: 10px;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; button {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; display: block;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: 100px;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; height: 30px;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; margin: 50px auto;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; </style></head><body>&nbsp; &nbsp; <input id="n" type="text" name="" placeholder="n" value="6">&nbsp; &nbsp; <input id="m" type="text" name="" placeholder="m" value="4">&nbsp; &nbsp; <input id="array" type="text" name="" placeholder="arr" value="1, -3, 5, 1, -2, 3">&nbsp; &nbsp; <button>ok</button>&nbsp; &nbsp;&nbsp;<script src="../js/lib/jquery.min.js"></script><script src="../js/lib/vue.js"></script><script language="javascript" type="text/javascript">$("button").on("click", function() {&nbsp; &nbsp; var n = $("#n").val() - 0&nbsp; &nbsp; var m = $("#m").val() - 0&nbsp; &nbsp; var arr = $("#array").val().split(",")&nbsp; &nbsp; if(!(n>=m && n==arr.length)) {&nbsp; &nbsp; &nbsp; console.error("input invalid")&nbsp; &nbsp; &nbsp; return&nbsp; &nbsp; }&nbsp; &nbsp; //arr = getNumArr(arr)&nbsp; &nbsp; /*n = 6&nbsp; &nbsp; m = 4&nbsp; &nbsp; arr = [1, -3, 5, 1, -2, 3]*/&nbsp; &nbsp; var tt = n-m+1&nbsp; &nbsp; var arrr = []&nbsp; &nbsp; var sum = 0&nbsp; &nbsp; for(var j=0; j<tt; j++) {&nbsp; &nbsp; &nbsp; &nbsp; sum = 0&nbsp; &nbsp; &nbsp; &nbsp; for(var i=j; i<=m+j; i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (i<m+j){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sum += parseInt(arr[i])&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; arrr.push(sum)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; console.log(Math.max.apply(Math, arrr));})</script></body></html>
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答