题意:
用m天的时间来学n门课程,给出n和m和一个num[n][m]的矩阵,num[n][m] 代表的是花m天的时间学习第n门课程所获得的价值,求最多能获得多大的价值
#include <iostream> #include <cstdio> #include <vector> #include <cstring> using namespace std; const int Ni = 120; int dp[Ni][Ni]; int d[Ni][Ni]; int main() { int n,m,i,j,k; while(scanf("%d%d",&n,&m),n+m) { for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%d",&d[i][j]); } } memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { for(k=m;k>=j;k--) { dp[i][k]=max(dp[i][k],dp[i-1][k]); dp[i][k]=max(dp[i][k],dp[i-1][k-j]+d[i][j]); } } } printf("%d\n",dp[n][m]); } return 0; }