nyoj-716 River Crossing(动态规划)

来源:互联网 发布:淘宝母婴用品好做吗 编辑:程序博客网 时间:2024/05/29 19:46

题意:就是求用木筏把羊运送到对岸所需时间最少

用数组 a[i] 记录运送 i  只羊所需的时间

dp[i] 表示运送i 只羊所用的最少时间

代码:

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int dp[1005];int a[1005] = {0};int main(){    int t,n,m,x;    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&m);        for(int i = 1;i <= n;i++)        {            scanf("%d",&x);            a[i] = a[i-1] + x;        }        for(int i = 1;i <= n;i++)        {            dp[i] = a[i] + m;//当前运送i只羊过河所要花费的时间            for(int j = 1;j < i;j++)            {                dp[i] = min(dp[i],dp[i-j]+dp[j]+m);//先运送j只羊返回再运送i-j只羊的花费时间与当前运送i只羊相比的最小值            }        }        printf("%d\n",dp[n]);    }}


0 0
原创粉丝点击