动态规划——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;
}
思路:每个数都有加到前面作为前面已经加好的和的增量和自己独立成为一个“最大和”的选择,在这两个选择中的最大和就是局部的最大和,而保存好第一个最大和,将整个序列的所有局部最大和都求解出来,就能得到全列的最大和
#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;
}
相关文章推荐
- 深度揭秘阿里移动端高性能动态化方案Weex
- GDOI2016总结
- ReactNative 学习第二节 环境搭建
- 二*苹果树 树型动态规划
- Vmware虚拟机硬盘扩容: Linux下虚拟机硬盘空间扩展及挂载配置
- nodejs: error 事件 转载自“这个笑话网”
- Unity设置cullingMask值
- 装箱问题
- POJ 2244 Eeny Meeny Moo
- 多线程实现的方式3:(开启不同的线程,分别进行求和)
- 网络仿真工具TOTEM之——mpls构建LSP
- HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
- android 自学日记(六) ——SAX解析中换行问题解决
- HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
- 对称的二叉树
- StringUtil
- 自动化运维工具Ansible详细部署
- 船
- 手动制作hadoop-eclipse-plugin插件
- 异常