解题思路:
利用贪心的思想,每一步有两种选择,把这两种选择的结果都算出来,选最优的选择,每一步都选最优的选择
(我是参考Newguy_同学的思路,不过用c实现)
注意事项:
参考代码:
#include<stdio.h>
//贪心思想,每走一步,都有两种选择,flash或者跑,每次都选择可以逃得更远的那种
int main()
{
int M,S,t,i=0;
int flash=0,sum=0;//flash记录可以如果某一步选“闪”,能逃多远;sum先记录如果自己跑,能逃多远,然后和flash比较,最后取能逃得更远的那个数
scanf("%d%d%d",&M,&S,&t);
for(i=1;i<=t;i++)//将闪移和跑步分卡考虑,优先考虑闪移(因为魔法够的话,显然“闪”比较快)
{
if(M>=10)//魔法点数大于10,就“闪”
{
flash=flash+60;
M=M-10;
}
else//否则休息,加魔法点
M=M+4;
sum=sum+17;//如果这一步选自己跑,能跑多远
if(sum<flash)//最终sum存储这一步的最优选择
sum=flash;
if(sum>=S)
{
printf("Yes\n%d",i);
break;
}
}
if(i>t)
{
printf("No\n");
printf("%d\n",sum);
}
return 0;
}
0.0分
5 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复