首页 > 其他 > 详细

UVA 10529 Dumb Bones

时间:2015-10-06 06:57:47      阅读:202      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!