POJ 2385 Apple Catching

来源:互联网 发布:淘宝客服下班结束语 编辑:程序博客网 时间:2024/06/07 06:42

原题链接

思路:
动态规划。
思路:i秒转移j次:dp[i][j] = max(dp[i-1][j],dp[i-1][j-1]) + 第i秒是否接到苹果
dp[i-1][j]: i秒没有转移
dp[i-1][j-1]:i秒转移了

AC代码:

#include <iostream>#include <cstdio>#include <algorithm>#include <cstdlib>#include <cstring>#include <cmath>using namespace std;int T,W,a[1005],dp[1005][35],ans; int main(){    int i,j;     scanf("%d %d",&T,&W);    for(i = 1; i <= T; i++){        scanf("%d",&a[i]);    }    if(a[1] == 1){        dp[1][0] = 1;        dp[1][1] = 0;    }    else{        dp[1][0] = 0;        dp[1][1] = 1;    }    for(i = 2; i <= T; i++){        for(j = 0; j <= W; j++){            if(j == 0){                dp[i][j] = dp[i-1][j] +a[i]%2;                continue;             }            dp[i][j] = max(dp[i-1][j],dp[i-1][j-1]);            if(a[i] == j%2 + 1)  dp[i][j]++;        }    }    for(i = 1; i <= W; i++){        ans = max(ans,dp[T][i]);    }    printf("%d\n",ans);    return 0;}
1 0
原创粉丝点击