1 solutions
-
0
C++ :
#include<iostream> #include<algorithm> using namespace std; const int N = 20; int val[N][N],f[N][N],ans; void show(int i,int j){ if (i==0) return; for (int k=0; k<=j; k++) if (ans==f[i-1][k]+val[i][j-k]){ ans=f[i-1][k]; show(i-1,k); cout<<i<<" "<<j-k<<endl; return; } } int main(){ int n,m; cin>>n>>m; for (int i=1; i<=n; i++) for (int j=1; j<=m; j++) cin>>val[i][j]; for (int i=1; i<=n; i++) for (int j=1; j<=m; j++) for (int k=0; k<=j; k++) f[i][j]=max(f[i][j],f[i-1][k]+val[i][j-k]); ans=f[n][m]; cout<<ans<<endl; show(n,m); return 0; }
- 1
Information
- ID
- 18659
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By