Write a function max_sum that takes v a row vector of numbers & n,a positive integer as inputs.The function needs to find n consecutive elements of v whose sum is largest poss
4 ビュー (過去 30 日間)
古いコメントを表示
I write this code for the qst in desciption
function [summa,index] = max_sum(v,n)
l=length(v);
if n>length(v)
summa =0
index=-1
else
m=v(1:n)
for ii=1:l-n+1
vect=v(ii:ii+n-1)
if sum(m)<sum(vect)
m=vect
end
end
summa = sum(m)
index = m(1)
end
end
and it's working for all exemple in description but for long vector like in qst 2 the result it's false

the problem is the rihjt response it's my, bcz I check it and I don't know if someone can help me if I already didn't undestand the problem
回答 (1 件)
Divyam
2025 年 5 月 2 日
You can use the 'conv' function to compute the sum of every window of length n efficienty:
function [sum, idx] = max_sum(v, n)
% Finds n consecutive elements in v with the largest sum.
if n > length(v)
error('n must not exceed the length of v');
end
s = conv(v, ones(1, n), 'valid');
% Sliding sum
[sum, idx] = max(s);
end
v = [1 3 2 5 6 2 1];
n = 3;
[sum, idx] = max_sum(v, n)
For more information regarding the 'conv' function, refer to the following documentation: https://www.mathworks.com/help/matlab/ref/conv.html
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!