hdu 2182 (dp)

来源:互联网 发布:mac怎么往qq发文件 编辑:程序博客网 时间:2024/05/14 21:11

点击打开链接


简单DP,但是还是思考了好久

dp【i】【j】表示跳i次,到位置j的吃虫子总数。

dp【i】【l】=max(dp【i-1】【j】+ A【l】),我是控制,从位置j跳到位置l。


#include"stdio.h"#include"string.h"#define N 101int main(){int T;int i,j,l;int n,a,b,k;int A[N],dp[N][N*10];scanf("%d",&T);while(T--){scanf("%d%d%d%d",&n,&a,&b,&k);for(i=0;i<n;i++)scanf("%d",&A[i]);memset(dp,0,sizeof(dp));for(i=0;i<=k;i++)dp[i][0]=A[0];int max;for(i=1;i<=k;i++){for(j=0;j<n;j++){for(l=j+a;l<=j+b&&l<n;l++){if(dp[i][l]<dp[i-1][j]+A[l])dp[i][l]=dp[i-1][j]+A[l];}}}max=-1;for(i=0;i<n;i++){for(j=0;j<=k;j++)if(dp[j][i]>max)max=dp[j][i];}printf("%d\n",max);}return 0;}


原创粉丝点击