2 条题解
-
2
=
#include<bits/stdc++.h> using namespace std; int n,m,i,j; int a[505][105],minn=INT_MAX,f[105][105]; 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) { if(j==1)f[i][j]=a[i][j]+f[i-1][j]; else f[i][j]=a[i][j]+min(f[i-1][j],f[i][j-1]); } for(j=m-1;j>=1;--j) f[i][j]=min(f[i][j],f[i][j+1]+a[i][j]); } for(j=1;j<=m;++j) if(f[n][j]<minn) minn=f[n][j]; cout<<minn; return 0; } -
0
#include <bits/stdc++.h> using namespace std; long long m,n,a[501][501],b[501][501],minn=INT_MAX; int main() { cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) b[1][i]=a[1][i]; for(int i=2;i<=m;i++) { for(int j=1;j<=n;j++) { b[i][j]=b[i-1][j]+a[i][j]; if(j>1) b[i][j]=min(b[i][j],b[i][j-1]+a[i][j]); } for(int j=n;j>=1;j--) if(j<n) b[i][j]=min(b[i][j],b[i][j+1]+a[i][j]); } for(int i=1;i<=n;i++)minn=min(minn,b[m][i]); cout<<minn; }
- 1
信息
- ID
- 25
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 171
- 已通过
- 59
- 上传者