Tyvj 1203 机器分配(DP)

题目链接

题目还是比较水的,好久没有很短的时间就看出状态转移了。。。然后就是注意一下,机器越多,生产的价值不一定高。。。写了一个不靠谱的程序又是只有一组没过。。。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 int p[101][101],dp[101][101];
 6 int main()
 7 {
 8     int n,m,i,j,k,ans;
 9     scanf("%d%d",&n,&m);
10     for(i = 1;i <= n;i ++)
11     {
12         for(j = 1;j <= m;j ++)
13         scanf("%d",&p[i][j]);
14     }
15     for(i = 1;i <= m;i ++)
16     dp[1][i] = p[1][i];
17     for(i = 2;i <= n;i ++)
18     {
19         for(j = 1;j <= m;j ++)
20         {
21             dp[i][j] = dp[i-1][j];
22             for(k = 1;k <= j;k ++)
23             {
24                 if(dp[i][j] < dp[i-1][j-k] + p[i][k])
25                 dp[i][j] = dp[i-1][j-k] + p[i][k];
26             }
27         }
28     }
29     ans = 0;
30     for(i = 1;i <= m;i ++)
31     {
32         if(ans < dp[n][i])
33         ans = dp[n][i];
34     }
35     printf("%d\n",ans);
36     return 0;
37 }
posted @ 2012-10-19 11:34  Naix_x  阅读(214)  评论(0编辑  收藏  举报