2 条题解
-
0
#include<bits/stdc++.h> #define r(a) scanf("%d",&a) #define f(i,l,r) for(int i=l;i<=r;i++) #define F(i,r,l) for(int i=r;i>=l;i--) using namespace std; int n,m,a[105][105],f[105][105]; int main(){ r(n);r(m); f(i,1,n)f(j,1,m)r(a[i][j]); f(i,1,n)f(j,1,m)f(k,-2,2){ if(k+j>=1&&k+j<=m){ f[i+1][j]=max(f[i+1][j],f[i][k+j]+a[i][k+j]); } } printf("%d",f[n+1][m/2+1]); return 0; }
-
-2
#include<bits/stdc++.h> using namespace std; long long i,j,dy[10]={-2,-1,0,1,2},a[110][110],f[110][110],n,m,ma=-1e9; int main() { cin>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>a[i][j]; for(i=1;i<=m;i++) f[1][i]=a[1][i]; for(i=2;i<=n;i++) for(j=1;j<=m;j++) f[i][j]=max(f[i-1][j-2],max(f[i-1][j-1],max(f[i-1][j],max(f[i-1][j+1],f[i-1][j+2]))))+a[i][j];//本项+当前5项的最大值(用max()函数求) j=m/2+1; cout<<max(f[n][j-2],max(f[n][j-1],max(f[n][j],max(f[n][j+1],f[n][j+2])))); return 0; }
- 1
信息
- ID
- 93
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 87
- 已通过
- 39
- 上传者