HDU 1081 To The Max
来源:互联网 发布:linux下路由跟踪命令 编辑:程序博客网 时间:2024/06/05 12:06
HDU 1081 To The Max
其实这道题不是特别复杂,直接暴力求解就可以了你n^4(实际没这么高)
不过今天学习了新的办法,所以尝试一下最大子矩阵,下面是两种方法的代码
最大子矩阵
/**HDU 1081 To The Max通过这道题检验一下自己学习的最大子矩阵利用最大子段和的状态转移方程f[i]=max(a[i],a[i]+f[i-1]);得出:dp[i][j][k]=max(fun(i,j,k),fun(i,j,k)+dp[i-1][j][k]);*/#include<algorithm>#include<iostream>#include<cstdio>#include<cstring>#define ll long long#define maxn 105using namespace std;int dp[maxn][maxn][maxn];int a[maxn][maxn];int sum[maxn][maxn];void Init_sum(int n){ memset(sum,0,sizeof(sum)); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) sum[i][j]=sum[i-1][j]+a[i][j];}int fun(int c,int ru,int rd){ //计算c列从ru行到rd行的和 return sum[rd][c]-sum[ru-1][c];}int main(){ int n; while(~scanf("%d",&n)){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); Init_sum(n); memset(dp,0,sizeof(dp)); int ans=-1e9; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=j;k<=n;k++){ dp[i][j][k]=max(fun(i,j,k),fun(i,j,k)+dp[i-1][j][k]); ans=max(ans,dp[i][j][k]); } printf("%d\n",ans); } return 0;}
暴力求解
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int MAXN=105;int a[MAXN][MAXN];int main(){ int n,s; int nmax; while(~scanf("%d",&n)){ memset(a,0,sizeof(a)); for(int i=1;i<=n;i++){ for(int j=1,ma=0;j<=n;j++){ scanf("%d",&s); a[i][j]=s+ma+a[i-1][j]; ma+=s; } } nmax=a[1][1]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ for(int k=0;k<i;k++){ for(int t=0;t<j;t++){ nmax=max(nmax,a[i][j]-a[k][j]-a[i][t]+a[k][t]); } } } } printf("%d\n",nmax); } return 0;}
0 0
- HDU 1081 To the Max
- HDU 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 to the max
- hdu 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 To The Max
- hdu 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 To The Max
- HDU 1081 To The Max
- Android在ListView中嵌套一个GridView时只显示一行的原因及解决方法
- hdu 1540/POJ 2892 Tunnel Warfare 【线段树区间合并】
- uva10820(欧拉函数)
- Hibernate单向关联N-N
- 【DP】poj1692
- HDU 1081 To The Max
- SAP系统硬件解决方案
- Hie with the Pie
- poj-1961 Period
- PKI(公钥基础设施)基础知识笔记
- Linux内核线程之父pid=2的kthreadd线程
- 抗锯齿方法两种(其一:paint.setAntiAlias(ture);paint.setBitmapFilter(true))
- 自己动手实现数据结构——AVL树(C++实现)
- compiz使Ubuntu unity桌面消失