码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 10529 Dumb Bones

时间:2015-10-06 06:59:34      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

#include <iostream>
#include <stdio.h>
#include <cstring>
#define MAX 1010
using namespace std;
double pl,pr;
double data[MAX];

void Init()
{
    memset(data, 0, sizeof(data));
}

double dp(int n)
{
    double temp;
    int l,r;
    if(n==0)
        return 0;
    if(data[n]>0)
        return data[n];

    for(int i=1;i<=n;i++)
    {
        l=i-1;
        r=n-i;
        temp = dp(l)+dp(r)+(dp(l)*pl+dp(r)*pr+1)/(1-pl-pr);
        if(i==1)
            data[n] = temp;
        else if(temp < data[n])
            data[n] = temp;
    }
    return data[n];
}

int main()
{
    int n;
    while(scanf("%d%lf%lf",&n,&pl,&pr)!=EOF && n!=0)
    {
        Init();
        printf("%.2lf\n", dp(n));
    }
    return 0;
}

 

UVA 10529 Dumb Bones

标签:

原文地址:http://www.cnblogs.com/tuty/p/4856634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!