php求正负数数组中连续元素最大值示例

 问题是给出数组,该数组由正负数字组成,找出该数组中连续元素组成的子数组的最大值。下面是PHP实现的示例,需要的朋友可以参考下

php实现正负数数组最大子序列,要求给出数组,该数组由正负数字组成,找出该数组中连续元素组成的子数组的最大值。
这其实得算是个背包变种吧。
 
代码如下:
<?php
$list = array(1,-3,-5,-7,8,9,-11,5);
 
$cur = 0;
$term = 0;
$res = 0;
$begin = 0;
 
foreach($list as $k => $v){
 $cur += $v;
 if($cur < 0){
  $cur = 0;
  $begin = $k + 1;
 } 
 if($cur > $res){
  $res = $cur;
  $term = $k;
 }
}
$max_seq = array_slice($list, $begin, ($term - $begin) + 1);
 
echo $res . ',';
print_r($max_seq);
//17,Array ( [0] => 8 [1] => 9 ) 
 

时间: 2024-10-25 22:17:16

php求正负数数组中连续元素最大值示例的相关文章

php求正负数数组中连续元素最大值示例_php实例

php实现正负数数组最大子序列,要求给出数组,该数组由正负数字组成,找出该数组中连续元素组成的子数组的最大值.这其实得算是个背包变种吧. 复制代码 代码如下: <?php$list = array(1,-3,-5,-7,8,9,-11,5); $cur = 0;$term = 0;$res = 0;$begin = 0; foreach($list as $k => $v){ $cur += $v; if($cur < 0){  $cur = 0;  $begin = $k + 1; }

Java求数组中连续n个元素使其和最大

给定一个数组,求出数组中连续的一些元素使其和的值最大.如果所有元素都为正数,显然整个数组即为所求的.如果所有元素的值为负数,则所求的最大值为0. 这是在编程珠玑上看到的,其时间复杂度由O(n3)减为O(n)了. java代码 package cn.lifx.test; public class MaxSum { public static void main(String[] args) { int[] arr = new int[]{31, -41, 59, 26, -53, 58, 97,

c++-数组的指针怎么访问数组中的元素求大神帮忙

问题描述 数组的指针怎么访问数组中的元素求大神帮忙 所有需要的文件均已包含 using arry=int[5]: arry* chen() [ Int j=0,i,a[5]: While(cin>>i) {if(j==5) Break: a[j]=i: ++j: } return &a: ] Int main() {Int (*b)[5]: b=chen(): for(int i=0:i<5:i++) cout<<(*b)[i]<<endl: } 解决方案

c语言-关于去除数组中重复元素的问题

问题描述 关于去除数组中重复元素的问题 源代码:#include #include int main() { int *a; int n,i,j; scanf("%d",n); a=(int *)malloc(n*sizeof(int)); for (i=0;i<n;i++) scanf("%d",&a[i]); for (i=0;i<n;i++) for (j=1;j<n;j++) if (a[i]==a[j]) printf (&quo

怎么调用数组中的元素全是数组

问题描述 求大神们帮我看看 解决方案 解决方案二:不就是个数组么?解决方案三:直接用下标访问就是了,你的问题是什么解决方案四:本身就是元素为数组的数组,当然里面全是数组啦!解决方案五:[0,0]13.0意思是在二维数组0,0位置的元素值为13.0解决方案六:这个数组是从MATLAB中的元胞数组调出来的,数组中的元素全部是数组,请问怎么取出其中的数组元素解决方案七:这个就是一个二维数组喽doubles=double[0][0];s=13.0解决方案八:inta=arr[0][0]这样解决方案九:差

PHP从数组中删除元素的四种方法实例

茴香豆的"茴"字有四种写法,PHP从数组中删除元素也有四种方法 ^_^. 删除一个元素,且保持原有索引不变 使用 unset 函数,示例如下: <?php $array = array(0 => "a", 1 => "b", 2 => "c"); unset($array[1]); //↑ 你想删除的key ?> 输出: Array (     [0] => a     [2] =>

PHP删除数组中特定元素的两种方法

这篇文章介绍了PHP中删除数组中特定元素的两种方法,有需要的朋友可以参考一下   方法一: 复制代码 代码如下: <?php $arr1 = array(1,3, 5,7,8); $key = array_search(3, $arr1); if ($key !== false)     array_splice($arr1, $key, 1); var_dump($arr1); ?> 输出: array(4) { [0]=> int(1) [1]=> int(5) [2]=>

JavaScript通过元素索引号删除数组中对应元素的方法

 这篇文章主要介绍了JavaScript通过元素索引号删除数组中对应元素的方法,涉及javascript操作数组的技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了JavaScript通过元素索引号删除数组中对应元素的方法.分享给大家供大家参考.具体分析如下: JavaScript通过元素的索引号删除数组中的元素,如果要删除第3个元素,则使用RemoveValByIndex(2)即可,JS数组从0开始 ? 1 2 3 4 5 6 7 8 9 10 11 function Rem

c语言-把数组中的元素 循环的作为函数中的参数 报错!

问题描述 把数组中的元素 循环的作为函数中的参数 报错! 把数组中的元素 循环的作为函数中的参数 怎么会报错 麻烦前辈帮忙看看 #include<stdio.h>int ShowNumber();int main (){ int number[10]; int i ; //循环变量 //随便为number数组赋值 for(i=0;i<10;i++)// i=0 1 2 3 4 5 6 7 8 9 { number[i]=i; } for(i=0;i<10;i++) { ShowNu