nyoj44求最大和 最大矩阵和问题
2012-07-10 15:22
190 查看
简单矩阵dp问题。。。可以把多维矩阵化为一维求最大和。。。。。
简单来说就是可以把第一行和第二行相加。。。然后求最大和,,,第一第二第三相加求最大和等等。。。。然后再从第二行开始,吧第二行第三行相加求最大值,,,
第二第三第四相加的最大和。。。。等等等。。。依此类推。。。。。。。
题目如下。。。。
描述
给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。
例子:
0 -2 -7 0
9
2 -6 2
-4
1 -4 1
-1 8 0 -2
其最大子矩阵为:
9
2
-4
1
-1
8
其元素总和为15。
输入第一行输入一个整数n(0<n<=100),表示有n组测试数据;
每组测试数据:
第一行有两个的整数r,c(0<r,c<=100),r、c分别代表矩阵的行和列;
随后有r行,每行有c个整数;
输出输出矩阵的最大子矩阵的元素之和。
样例输入
样例输出
代码:::
}#include<stdio.h>
int str[100][100];
int st[100];
int max1(int st[],int d)
{
int sum=0,x,max=-33333;
for(x=0;x<d;x++)
{
if(sum>0)
sum+=st[x];
else
sum=st[x];
if(sum>max)
max=sum;
}
return max;
}
int main()
{
int a,i,j,c,d;
scanf("%d",&a);
while(a--)
{
scanf("%d%d",&c,&d);
for(i=0;i<c;i++)
for(j=0;j<d;j++)
scanf("%d",&str[i][j]);
int sum=0,m,n,k,max=-3333,ma;
for(i=0;i<c;i++)
{
for(k=0;k<d;k++)
st[k]=0;
for(j=i;j<c;j++)
{
for(k=0;k<d;k++)
st[k]+=str[j][k];
ma=max1(st,d);
if(ma>max)
max=ma;
}
}
printf("%d\n",max);
}
return 0;
}
简单来说就是可以把第一行和第二行相加。。。然后求最大和,,,第一第二第三相加求最大和等等。。。。然后再从第二行开始,吧第二行第三行相加求最大值,,,
第二第三第四相加的最大和。。。。等等等。。。依此类推。。。。。。。
题目如下。。。。
描述
给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。
例子:
0 -2 -7 0
9
2 -6 2
-4
1 -4 1
-1 8 0 -2
其最大子矩阵为:
9
2
-4
1
-1
8
其元素总和为15。
输入第一行输入一个整数n(0<n<=100),表示有n组测试数据;
每组测试数据:
第一行有两个的整数r,c(0<r,c<=100),r、c分别代表矩阵的行和列;
随后有r行,每行有c个整数;
输出输出矩阵的最大子矩阵的元素之和。
样例输入
1 4 4 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2
样例输出
15
代码:::
}#include<stdio.h>
int str[100][100];
int st[100];
int max1(int st[],int d)
{
int sum=0,x,max=-33333;
for(x=0;x<d;x++)
{
if(sum>0)
sum+=st[x];
else
sum=st[x];
if(sum>max)
max=sum;
}
return max;
}
int main()
{
int a,i,j,c,d;
scanf("%d",&a);
while(a--)
{
scanf("%d%d",&c,&d);
for(i=0;i<c;i++)
for(j=0;j<d;j++)
scanf("%d",&str[i][j]);
int sum=0,m,n,k,max=-3333,ma;
for(i=0;i<c;i++)
{
for(k=0;k<d;k++)
st[k]=0;
for(j=i;j<c;j++)
{
for(k=0;k<d;k++)
st[k]+=str[j][k];
ma=max1(st,d);
if(ma>max)
max=ma;
}
}
printf("%d\n",max);
}
return 0;
}
相关文章推荐
- 最大子段和问题(nyoj 44 && 104)
- NYOJ 44 字串和 372 巧克力 (最大连续字串和问题)
- 最大整数NYOJ 44 字串和 370 巧克力 (最大连续字串和问题)
- NYOJ 44 & 104 - 最大连续子串和(矩阵最大子矩阵和)
- 网易面试题之小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. 现在给出一个N,需要求
- 最大子矩阵和问题
- nyoj 44 子串和(最大连续子序列和)
- nyoj 104 最大和(子矩阵最大和)(枚举)
- nyoj44最大字串和(动态规划)
- ACM——最大子矩阵问题——单位矩阵
- 0013算法笔记——【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题
- 网易面试题之小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. 现在给出一个N,需要求
- nyoj 44 子串和 & nyoj 104 最大和
- 最大子矩阵和问题归纳总结
- nyoj 104 最大和(子矩阵最大和)(枚举)
- NYOJ677谍战(最大流最小割问题)
- 网易面试题之小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. 现在给出一个N,需要求
- NYOJ 题目536 开心的mdd(矩阵的最大乘法次数模板)
- NYOJ题目460 项链(矩阵相乘最大步数)
- nyoj 104 最大和(子矩阵最大和)(枚举)