您的位置:首页 > 其它

动态规划——problemA

2016-05-05 20:42 225 查看
题意:求一个矩阵之内最大的一个子矩阵的和

思路:每个数都有加到前面作为前面已经加好的和的增量和自己独立成为一个“最大和”的选择,在这两个选择中的最大和就是局部的最大和,而保存好第一个最大和,将整个序列的所有局部最大和都求解出来,就能得到全列的最大和

#include<stdio.h>

int main()

{

    int i,ca=1,t,s,e,n,x,now,before,max;

    scanf("%d",&t);

while(t--)

    {

       scanf("%d",&n);

       for(i=1;i<n;i++)

       {

         scanf("%d",&now);

         if(i==1)

         {

            max=before=now;

            x=s=e=1;

         }

         else {

             if(now>now+before)

             {

                before=now;

                x=i;

             }

             else before+=now;

           }

         if(before>max)

           max=before,s=x,e=i;

       }

       printf("Case %d:\n%d %d %d\n",ca++,max,s,e);

       if(t)printf("\n");

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: