您的位置:首页 > 编程语言 > C语言/C++

C语言奶牛的锻炼

2017-03-18 22:08 204 查看
描述 Description

奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息。若她在第i分钟跑步,可以跑出D_i米,同时疲倦程度增加1(初始为0)。若她在第i分钟休息,则疲倦程度减少1。无论何时,疲倦程度都不能超过M。另外,一旦她开始休息,只有当疲惫程度减为0时才能重新开始跑步。在第N分钟后,她的疲倦程度必须为0。

输入格式 Input Format

Bessie想知道,她最多能跑的距离。

输出格式 Output Format

第一行,两个整数,代表N和M。

接下来N行,每行一个整数,代表D_i。

样例输入 Sample Input

5 2

5

3

4

2

10

样例输出 Sample Output

9

时间限制 Time Limitation

1s

注释 Hint

N <= 2000 , M <= 500 , D_i <= 1000

来源 Source

Vivian Snow

广东汕头聿怀初级中学NOIp第一次训练用题

原网页地址:http://www.tyvj.cn:8080/Problem_Show.asp?id=1023

超简单版本

#include<stdio.h>
int n,m;//   n  一共几分钟  m 疲劳指数
int a[2010];
int sum=0;
int max=0;
void fast(int time,int tired,int len) //time为已用时间   tired当前劳累度;
{                                                       //len 跑的长度
if(time >= n && tired==0)//时间耗完时疲劳度必须是0
{
if(len > max)
{
max = len;
}
return;
}
if(time >= n && tired!=0)  //   n  一共几分钟  m 疲劳指数
{
return;
}
if(tired >= m)
{
fast(time+1,tired - 1,len+a[time]*0); //这分钟不走
}
else
{
fast(time+1,tired+1,len+a[time]);//这分钟走

if(tired == 0)
{
fast(time+1,tired+0,len+a[time]*0); //这分钟不走
}
else
{
fast(time+1,tired - 1,len+a[time]*0); //这分钟不走
}
}
}
int main ()
{
scanf("%d %d",&n, &m);//   n  一共几分钟  m 疲劳指数
for(int i=0; i<n; i++)
scanf("%d", &a[i]);
fast(0, 0, 0);
printf("%d\n", max);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: