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 }

你可能感兴趣的:(dp)