Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65319
  • 博文数量: 115
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-08 19:09
文章分类
文章存档

2015年(115)

我的朋友

分类: C/C++

2015-08-06 16:44:10

原文地址:连续乘积最大子数组 作者:runningdark

求给定数组中的连续子数组的最大乘积。
 
简单DP,练手。codepad.org已验证

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <memory.h>
  4. #define MAX 1000

  5. int getmaxsub(int *input, int size){
  6.     if(input == NULL || size == 0) return 0xFFFF;
  7.     if(size == 1) return input[0];
  8.     int cur[size];
  9.     int next[size];
  10.     memcpy(cur, input, sizeof(int)*size);
  11.     int maxmult = -MAX;
  12.     int len = 1;
  13.     for(;len<size;len++){
  14.         int end = len;
  15.         for(;end<size;end++){
  16.             next[end] = cur[end-1] * input[end];
  17.             if(next[end]>maxmult){
  18.                 maxmult = next[end];
  19.             }
  20.         }
  21.         memcpy(cur,next,sizeof(int)*size);
  22.     }
  23.     return maxmult;
  24. }

  25. int main(){
  26.     int input[] = {5,3,2,4,-9,1};
  27.     printf("max mult : %d \n", getmaxsub(input,6));
  28. }

阅读(95) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~