首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

【微软面试题】找到任何相邻子向量的最大和

2012-08-07 
【微软面试题】找出任何相邻子向量的最大和输入一个具有个整数的向量x,输出任何子向量相加的最大和。如输入:i

【微软面试题】找出任何相邻子向量的最大和

输入一个具有个整数的向量x,输出任何子向量相加的最大和。
如输入:int a[] = {31,-41,59,26,-53,58,97,-93,-23,84};
则输出:187

/** 找出任何相邻子向量的最大和* xtfggef 2012/5/7*/#include<stdio.h>int max(int a,int b){return (a>b)?a:b;}void main(){int a[10] = {31,-41,59,26,-53,58,97,-93,-23,84};int maxsofar = 0;int maxendinghere = 0;for(int i=0; i<10; i++){//遇到负数,直接赋0,相当于跳过//遇到大一点的数,从该数开始maxendinghere=max(maxendinghere+a[i],0);maxsofar=max(maxsofar,maxendinghere);}printf("%d\n",maxsofar);}


仔细研究了下,好精妙的算法啊!建议读者走一遍程序,观察变化,体会细节!

热点排行