博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大子段和
阅读量:4947 次
发布时间:2019-06-11

本文共 1052 字,大约阅读时间需要 3 分钟。

题目链接:

题意:

        多组案例,每组案例给出给出一组字符串,找出这组字符串中连续子串的和的最大值。

       输入:首行输入案例数,每个案例先输入字符串长度,再输入字符串。案例与案例间用空行间隔。

案例:

        Sample Input     

        2

        5 6 -1 5 4 -7

        7 0 6 -1 1 -6 7 -5

        Sample Oouput

        Case 1:14 1 4

 

        Case 2:7 1 6

分析:

       最大子序列即找出数组中和最大的连续子序列。比如{5,-3,4,2}的最大子序列就是{5,-3,4,2},它的和是8,达到最大;而{5,-6,4,2}的最大子序列是{4,2},它的最大和是6。只要前i项的和还没有小于0则子序列就一直向后扩展,否则丢弃之前的子序列开始新的子序列,同时记下各个子序列的和,最后找到和最大的子序列。

源代码:

1 #include
2 int a[100010]; 3 int main() 4 { 5 int T,cnt=0; 6 scanf("%d",&T); 7 while(T--) 8 { 9 int n,count=-1000,sum=0,l=1,r,k=1;10 scanf("%d",&n);11 for(int i=0;i
count)//当前子串延续,和继续增大17 {18 count=sum;19 l=k;//记录子串开始位置20 r=j+1;//记录子串结束位置21 }22 if(sum<0)//当前子串和值达负值,另寻子串比较23 {24 sum=0;25 k=j+2;26 }27 }28 printf("Case %d:\n%d %d %d\n",++cnt,count,l,r);29 if(T) printf("\n");30 }31 return 0;32 }

 

转载于:https://www.cnblogs.com/huaszjh/p/4731263.html

你可能感兴趣的文章
PHP中的HTTP协议
查看>>
【ASP.NET】从服务器端注册客户端脚本
查看>>
C语言 memcpy二维数组的复制
查看>>
Infix to Postfix Expression
查看>>
win7任务栏还原为xp样式
查看>>
PYTHON_3和2
查看>>
json数组的取值方法
查看>>
2019-7-15 vue01day
查看>>
SELECT LOCK IN SHARE MODE and FOR UPDATE
查看>>
Perl/Nagios – Can’t locate utils.pm in @INC
查看>>
目录导航「深入浅出ASP.NET Core系列」
查看>>
Git常用命令拾遗
查看>>
Canvas的drawImage方法使用
查看>>
自定义适用于手机和平板电脑的 Dynamics 365(四):窗体脚本
查看>>
阴影效果参考网址
查看>>
华为交换机端口镜像
查看>>
简易爬虫(爬取本地数据)
查看>>
一位菜鸟的java 最基础笔记
查看>>
python 进程间通信
查看>>
字符串和编码
查看>>