24h購物| | PChome| 登入
2012-11-28 08:19:04| 人氣518| 回應0 | 上一篇 | 下一篇

[PTC][201211] PE Coin Game

推薦 0 收藏 0 轉貼0 訂閱站台

博奕遊戲,dp動規之




#include <stdio.h>
#include <algorithm>
#define oo 2147483647
using namespace std;
int coin[1005];
int dp[1005][1005];
int dfs(int l, int r, int k) {
    if(dp[l][r] != -oo)
        return dp[l][r];
    if(l > r)   return 0;
    int i, j, sum = 0;
    for(i = l, j = 0; i <= r && j < k; i++, j++) {
        sum += coin[i];
        dp[l][r] = max(dp[l][r], sum - dfs(i+1, r, k));
    }
    return dp[l][r];
}
int main() {
    int n, k, i, j;
    while(scanf("%d %d", &n, &k) == 2) {
        for(i = 1; i <= n; i++)
            scanf("%d", &coin[i]);
        for(i = 1; i <= n; i++) {
            for(j = 1; j <= n; j++) {
                dp[i][j] = -oo;
            }
            dp[i][i] = coin[i];
        }
        dfs(1, n, k);
        printf("%d\n", dp[1][n]);
    }
    return 0;
}

台長: Morris
人氣(518) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 資訊競賽 |
此分類下一篇:[ITSA] 19th 總解答
此分類上一篇:[PTC][201211] PD Happy Teachers’ Day

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文